Finding Lane Lines on the Road


In this project, you will use the tools you learned about in the lesson to identify lane lines on the road. You can develop your pipeline on a series of individual images, and later apply the result to a video stream (really just a series of images). Check out the video clip "raw-lines-example.mp4" (also contained in this repository) to see what the output should look like after using the helper functions below.

Once you have a result that looks roughly like "raw-lines-example.mp4", you'll need to get creative and try to average and/or extrapolate the line segments you've detected to map out the full extent of the lane lines. You can see an example of the result you're going for in the video "P1_example.mp4". Ultimately, you would like to draw just one line for the left side of the lane, and one for the right.


Let's have a look at our first image called 'test_images/solidWhiteRight.jpg'. Run the 2 cells below (hit Shift-Enter or the "play" button above) to display the image.

Note If, at any point, you encounter frozen display windows or other confounding issues, you can always start again with a clean slate by going to the "Kernel" menu above and selecting "Restart & Clear Output".


The tools you have are color selection, region of interest selection, grayscaling, Gaussian smoothing, Canny Edge Detection and Hough Tranform line detection. You are also free to explore and try other techniques that were not presented in the lesson. Your goal is piece together a pipeline to detect the line segments in the image, then average/extrapolate them and draw them onto the image for display (as below). Once you have a working pipeline, try it out on the video stream below.


Combined Image

Your output should look something like this (above) after detecting line segments using the helper functions below

Combined Image

Your goal is to connect/average/extrapolate line segments to get output like this

In [1]:
#importing some useful packages
import matplotlib.pyplot as plt
import matplotlib.image as mpimg
import numpy as np
import cv2
import math
%matplotlib inline
In [2]:
#reading in an image
image = mpimg.imread('test_images/solidWhiteRight.jpg')
#printing out some stats and plotting
print('This image is:', type(image), 'with dimesions:', image.shape)
plt.imshow(image)  #call as plt.imshow(gray, cmap='gray') to show a grayscaled image
This image is: <class 'numpy.ndarray'> with dimesions: (540, 960, 3)
Out[2]:
<matplotlib.image.AxesImage at 0x89a33c8>

Some OpenCV functions (beyond those introduced in the lesson) that might be useful for this project are:

cv2.inRange() for color selection
cv2.fillPoly() for regions selection
cv2.line() to draw lines on an image given endpoints
cv2.addWeighted() to coadd / overlay two images cv2.cvtColor() to grayscale or change color cv2.imwrite() to output images to file
cv2.bitwise_and() to apply a mask to an image

Check out the OpenCV documentation to learn about these and discover even more awesome functionality!

Below are some helper functions to help get you started. They should look familiar from the lesson!

In [3]:
def grayscale(img):
    """Applies the Grayscale transform
    This will return an image with only one color channel
    but NOTE: to see the returned image as grayscale
    you should call plt.imshow(gray, cmap='gray')"""
    return cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
    
def canny(img, low_threshold, high_threshold):
    """Applies the Canny transform"""
    return cv2.Canny(img, low_threshold, high_threshold)

def gaussian_blur(img, kernel_size):
    """Applies a Gaussian Noise kernel"""
    return cv2.GaussianBlur(img, (kernel_size, kernel_size), 0)

def region_of_interest(img, vertices):
    """
    Applies an image mask.
    
    Only keeps the region of the image defined by the polygon
    formed from `vertices`. The rest of the image is set to black.
    """
    #defining a blank mask to start with
    mask = np.zeros_like(img)   
    
    #defining a 3 channel or 1 channel color to fill the mask with depending on the input image
    if len(img.shape) > 2:
        channel_count = img.shape[2]  # i.e. 3 or 4 depending on your image
        ignore_mask_color = (255,) * channel_count
    else:
        ignore_mask_color = 255
        
    #filling pixels inside the polygon defined by "vertices" with the fill color    
    cv2.fillPoly(mask, vertices, ignore_mask_color)
    # plt.imshow(mask)
    #returning the image only where mask pixels are nonzero
    masked_image = cv2.bitwise_and(img, mask)
    return masked_image

left_x1 = 0.
right_x1 = 0.
left_x2 = 0.
right_x2 = 0.
def draw_lines(img, lines, color=[255, 0, 0], thickness=10):
    """
    NOTE: this is the function you might want to use as a starting point once you want to 
    average/extrapolate the line segments you detect to map out the full
    extent of the lane (going from the result shown in raw-lines-example.mp4
    to that shown in P1_example.mp4).  
    
    Think about things like separating line segments by their 
    slope ((y2-y1)/(x2-x1)) to decide which segments are part of the left
    line vs. the right line.  Then, you can average the position of each of 
    the lines and extrapolate to the top and bottom of the lane.
    
    This function draws `lines` with `color` and `thickness`.    
    Lines are drawn on the image inplace (mutates the image).
    If you want to make the lines semi-transparent, think about combining
    this function with the weighted_img() function below
    """
    
    imshape = img.shape
    left_count = 0.
    right_count = 0.
    global left_x1
    global right_x1
    global left_x2
    global right_x2

    left_x1_sum = 0.
    left_x2_sum = 0.
    right_x1_sum = 0.
    right_x2_sum = 0.
    
    for line in lines:
        for x1, y1, x2, y2 in line:
            if x2 != x1:
                slope = (y2 - y1)/(x2 - x1)
                if slope > 0.5:
                    right_count += 1
                    right_x1_sum += ((x2-x1)/(y2-y1))*(imshape[0]*0.6 - y1) + x1
                    right_x2_sum += ((x2-x1)/(y2-y1))*(imshape[0] - y1) + x1
                else:
                    if slope < -0.5:
                        left_count += 1
                        left_x1_sum += ((x2 - x1) / (y2 - y1)) * (imshape[0]*0.6 - y1) + x1
                        left_x2_sum += ((x2 - x1) / (y2 - y1)) * (imshape[0] - y1) + x1


    #for line in lines:
    #    for x1, y1, x2, y2 in line:
    #        cv2.line(img, (x1, y1), (x2, y2), color, thickness)
    if right_count != 0:
        right_x1 = right_x1_sum/right_count
        right_x2 = right_x2_sum/right_count
    cv2.line(img, (math.floor(right_x1), math.floor(imshape[0]*0.6)), ((math.floor(right_x2), imshape[0])), color, thickness)
    if left_count != 0:
        left_x1  = left_x1_sum/left_count
        left_x2  = left_x2_sum/left_count
    cv2.line(img, (math.floor(left_x1),  math.floor(imshape[0]*0.6)), ((math.floor(left_x2), imshape[0])),  color, thickness)
    
def hough_lines(img, rho, theta, threshold, min_line_len, max_line_gap):
    """
    `img` should be the output of a Canny transform.
        
    Returns an image with hough lines drawn.
    """
    lines = cv2.HoughLinesP(img, rho, theta, threshold, np.array([]), minLineLength=min_line_len, maxLineGap=max_line_gap)
    line_img = np.zeros((*img.shape, 3), dtype=np.uint8)
    draw_lines(line_img, lines)
    return line_img

# Python 3 has support for cool math symbols.

def weighted_img(img, initial_img, α=0.8, β=1., λ=0.):
    """
    `img` is the output of the hough_lines(), An image with lines drawn on it.
    Should be a blank image (all black) with lines drawn on it.
    
    `initial_img` should be the image before any processing.
    
    The result image is computed as follows:
    
    initial_img * α + img * β + λ
    NOTE: initial_img and img must be the same shape!
    """
    return cv2.addWeighted(initial_img, α, img, β, λ)

def pipeline(image):
    
    img = mpimg.imread(image)
    
    gray = grayscale(img)
    # plt.imshow(gray, cmap = 'gray')
    
    # Define a kernel size and apply Gaussian smoothing
    kernel_size = 3 #5
    blur_gray = gaussian_blur(gray, kernel_size)
    # plt.imshow(blur_gray, cmap = 'gray')
        
    # Define our parameters for Canny and apply
    low_threshold = 50
    high_threshold = 100
    edges = canny(blur_gray, low_threshold, high_threshold)
    # plt.imshow(edges, cmap = 'gray')
    
    # This time we are defining a four sided polygon to mask
    imshape = img.shape
    #print(imshape)
    vertices = np.array([[(0, imshape[0]), (imshape[1]*0.6, imshape[0]*0.45), (imshape[1]*0.6, imshape[0]*0.65),
                          (imshape[1], imshape[0])]], dtype=np.int32)
    masked_edges = region_of_interest(edges, vertices)
    # plt.imshow(masked_edges, cmap = 'gray')
    
    # Define the Hough transform parameters
    # Make a blank the same size as our image to draw on
    rho = 1  # distance resolution in pixels of the Hough grid
    theta = np.pi / 180  # angular resolution in radians of the Hough grid
    threshold = 10  # minimum number of votes (intersections in Hough grid cell)
    min_line_len = 50  # minimum number of pixels making up a line
    max_line_gap = 50  # maximum gap in pixels between connectable line segments
    
    # Run Hough on edge detected image
    # Output "lines" is an array containing endpoints of detected line segments
    line_image = hough_lines(masked_edges, rho, theta, threshold, min_line_len, max_line_gap)
    # Iterate over the output "lines" and draw lines on a blank image
    # line_image = np.copy(pl_original_image)*0 # creating a blank to draw lines on
    # draw_lines(line_image, lines, color=[255, 0, 0], thickness=2)
    lines_edges = weighted_img(line_image, img)
    # plt.imshow(lines_edges)
    
    return lines_edges

Test on Images

Now you should build your pipeline to work on the images in the directory "test_images"
You should make sure your pipeline works well on these images before you try the videos.

In [4]:
import os

os.listdir("test_images/")
image = pipeline('test_images/solidWhiteCurve.jpg')
print(image.shape)
plt.imshow(image)
#pipeline(image)
(540, 960, 3)
Out[4]:
<matplotlib.image.AxesImage at 0x8be2208>

run your solution on all test_images and make copies into the test_images directory).

Test on Videos

You know what's cooler than drawing lanes over images? Drawing lanes over video!

We can test our solution on two provided videos:

solidWhiteRight.mp4

solidYellowLeft.mp4

In [5]:
# Import everything needed to edit/save/watch video clips
from moviepy.editor import VideoFileClip
from IPython.display import HTML
In [6]:
def process_image(image):
    # NOTE: The output you return should be a color image (3 channel) for processing video below
    # TODO: put your pipeline here,
    # you should return the final output (image with lines are drawn on lanes)
     
    # Color selection to gray
    gray = grayscale(image)
    # plt.imshow(gray, cmap = 'gray')
    
    # Define a kernel size and apply Gaussian smoothing
    kernel_size = 5
    blur_gray = gaussian_blur(gray, kernel_size)
    # plt.imshow(blur_gray, cmap = 'gray')
    # plt.show()
    
    # Define our parameters for Canny and apply
    low_threshold = 50
    high_threshold = 150
    edges = cv2.Canny(blur_gray, low_threshold, high_threshold)
    
    # This time we are defining a four sided polygon of side [(0, 540), (450, 290), (490, 290), (960, 540)] to mask
    imshape = image.shape
    #vertices = np.array([[(0,imshape[0]),(450, 290), (490, 290), (imshape[1],imshape[0])]], dtype=np.int32)
    vertices = np.array([[(0,imshape[0]),(490, 290), (imshape[1],imshape[0])]], dtype=np.int32)
    masked_image = region_of_interest(edges, vertices)
    plt.imshow(masked_image, cmap='Greys_r')

    # Hough transform
    #rho = 2
    #theta = np.pi/180 
    #threshold = 15     
    #min_line_len = 40
    #max_line_gap = 10 

    rho = 1
    theta = np.pi/180 
    threshold = 100     
    min_line_len = 10
    max_line_gap = 100 

    line_img = hough_lines(masked_image, rho, theta, threshold, min_line_len, max_line_gap)
        
    plt.imshow(line_img)

    result = weighted_img(line_img, image)
    # plt.imshow(result, cmap='gray')
    plt.show()
    return result

Let's try the one with the solid white lane on the right first ...

In [7]:
white_output = 'white.mp4'
clip1 = VideoFileClip("solidWhiteRight.mp4")
white_clip = clip1.fl_image(process_image) #NOTE: this function expects color images!!
%time white_clip.write_videofile(white_output, audio=False)
[MoviePy] >>>> Building video white.mp4
[MoviePy] Writing video white.mp4
  0%|                                                                                                              | 0/222 [00:00<?, ?it/s]
  0%|▍                                                                                                     | 1/222 [00:00<02:17,  1.60it/s]
  1%|▉                                                                                                     | 2/222 [00:01<02:09,  1.69it/s]
  1%|█▍                                                                                                    | 3/222 [00:01<02:08,  1.70it/s]
  2%|█▊                                                                                                    | 4/222 [00:02<02:02,  1.78it/s]
  2%|██▎                                                                                                   | 5/222 [00:02<01:58,  1.83it/s]
  3%|██▊                                                                                                   | 6/222 [00:03<02:13,  1.62it/s]
  3%|███▏                                                                                                  | 7/222 [00:04<02:34,  1.39it/s]
  4%|███▋                                                                                                  | 8/222 [00:05<02:22,  1.51it/s]
  4%|████▏                                                                                                 | 9/222 [00:05<02:20,  1.52it/s]
  5%|████▌                                                                                                | 10/222 [00:06<02:09,  1.63it/s]
  5%|█████                                                                                                | 11/222 [00:06<02:02,  1.73it/s]
  5%|█████▍                                                                                               | 12/222 [00:07<01:57,  1.79it/s]
  6%|█████▉                                                                                               | 13/222 [00:07<01:56,  1.80it/s]
  6%|██████▎                                                                                              | 14/222 [00:08<02:11,  1.59it/s]
  7%|██████▊                                                                                              | 15/222 [00:09<02:05,  1.65it/s]
  7%|███████▎                                                                                             | 16/222 [00:09<02:01,  1.70it/s]
  8%|███████▋                                                                                             | 17/222 [00:10<01:54,  1.79it/s]
  8%|████████▏                                                                                            | 18/222 [00:10<01:54,  1.78it/s]
  9%|████████▋                                                                                            | 19/222 [00:11<01:55,  1.76it/s]
  9%|█████████                                                                                            | 20/222 [00:11<01:54,  1.76it/s]
  9%|█████████▌                                                                                           | 21/222 [00:12<01:50,  1.82it/s]
 10%|██████████                                                                                           | 22/222 [00:12<01:47,  1.86it/s]
 10%|██████████▍                                                                                          | 23/222 [00:13<01:44,  1.90it/s]
 11%|██████████▉                                                                                          | 24/222 [00:13<01:41,  1.95it/s]
 11%|███████████▎                                                                                         | 25/222 [00:14<01:50,  1.78it/s]
 12%|███████████▊                                                                                         | 26/222 [00:14<01:45,  1.86it/s]
 12%|████████████▎                                                                                        | 27/222 [00:15<01:42,  1.91it/s]
 13%|████████████▋                                                                                        | 28/222 [00:15<01:39,  1.96it/s]
 13%|█████████████▏                                                                                       | 29/222 [00:16<01:40,  1.93it/s]
 14%|█████████████▋                                                                                       | 30/222 [00:16<01:38,  1.94it/s]
 14%|██████████████                                                                                       | 31/222 [00:17<01:38,  1.94it/s]
 14%|██████████████▌                                                                                      | 32/222 [00:17<01:35,  1.98it/s]
 15%|███████████████                                                                                      | 33/222 [00:18<01:34,  1.99it/s]
 15%|███████████████▍                                                                                     | 34/222 [00:18<01:34,  2.00it/s]
 16%|███████████████▉                                                                                     | 35/222 [00:19<01:34,  1.98it/s]
 16%|████████████████▍                                                                                    | 36/222 [00:20<01:43,  1.79it/s]
 17%|████████████████▊                                                                                    | 37/222 [00:20<01:40,  1.85it/s]
 17%|█████████████████▎                                                                                   | 38/222 [00:21<01:35,  1.92it/s]
 18%|█████████████████▋                                                                                   | 39/222 [00:21<01:35,  1.92it/s]
 18%|██████████████████▏                                                                                  | 40/222 [00:22<01:32,  1.97it/s]
 18%|██████████████████▋                                                                                  | 41/222 [00:22<01:31,  1.98it/s]
 19%|███████████████████                                                                                  | 42/222 [00:23<01:29,  2.00it/s]
 19%|███████████████████▌                                                                                 | 43/222 [00:23<01:28,  2.01it/s]
 20%|████████████████████                                                                                 | 44/222 [00:24<01:27,  2.03it/s]
 20%|████████████████████▍                                                                                | 45/222 [00:24<01:27,  2.03it/s]
 21%|████████████████████▉                                                                                | 46/222 [00:25<01:27,  2.02it/s]
 21%|█████████████████████▍                                                                               | 47/222 [00:25<01:37,  1.79it/s]
 22%|█████████████████████▊                                                                               | 48/222 [00:26<01:34,  1.84it/s]
 22%|██████████████████████▎                                                                              | 49/222 [00:26<01:32,  1.87it/s]
 23%|██████████████████████▋                                                                              | 50/222 [00:27<01:32,  1.86it/s]
 23%|███████████████████████▏                                                                             | 51/222 [00:27<01:29,  1.92it/s]
 23%|███████████████████████▋                                                                             | 52/222 [00:28<01:27,  1.94it/s]
 24%|████████████████████████                                                                             | 53/222 [00:28<01:25,  1.98it/s]
 24%|████████████████████████▌                                                                            | 54/222 [00:29<01:25,  1.97it/s]
 25%|█████████████████████████                                                                            | 55/222 [00:29<01:23,  1.99it/s]
 25%|█████████████████████████▍                                                                           | 56/222 [00:30<01:25,  1.95it/s]
 26%|█████████████████████████▉                                                                           | 57/222 [00:30<01:24,  1.96it/s]
 26%|██████████████████████████▍                                                                          | 58/222 [00:31<01:31,  1.78it/s]
 27%|██████████████████████████▊                                                                          | 59/222 [00:32<01:27,  1.86it/s]
 27%|███████████████████████████▎                                                                         | 60/222 [00:32<01:25,  1.90it/s]
 27%|███████████████████████████▊                                                                         | 61/222 [00:33<01:22,  1.94it/s]
 28%|████████████████████████████▏                                                                        | 62/222 [00:33<01:21,  1.97it/s]
 28%|████████████████████████████▋                                                                        | 63/222 [00:34<01:19,  1.99it/s]
 29%|█████████████████████████████                                                                        | 64/222 [00:34<01:19,  1.98it/s]
 29%|█████████████████████████████▌                                                                       | 65/222 [00:35<01:20,  1.96it/s]
 30%|██████████████████████████████                                                                       | 66/222 [00:35<01:20,  1.94it/s]
 30%|██████████████████████████████▍                                                                      | 67/222 [00:36<01:25,  1.81it/s]
 31%|██████████████████████████████▉                                                                      | 68/222 [00:36<01:34,  1.64it/s]
 31%|███████████████████████████████▍                                                                     | 69/222 [00:37<01:36,  1.59it/s]
 32%|███████████████████████████████▊                                                                     | 70/222 [00:38<01:29,  1.70it/s]
 32%|████████████████████████████████▎                                                                    | 71/222 [00:38<01:28,  1.71it/s]
 32%|████████████████████████████████▊                                                                    | 72/222 [00:39<01:42,  1.47it/s]
 33%|█████████████████████████████████▏                                                                   | 73/222 [00:40<01:41,  1.47it/s]
 33%|█████████████████████████████████▋                                                                   | 74/222 [00:41<01:43,  1.43it/s]
 34%|██████████████████████████████████                                                                   | 75/222 [00:41<01:39,  1.48it/s]
 34%|██████████████████████████████████▌                                                                  | 76/222 [00:42<01:32,  1.58it/s]
 35%|███████████████████████████████████                                                                  | 77/222 [00:42<01:29,  1.62it/s]
 35%|███████████████████████████████████▍                                                                 | 78/222 [00:43<01:36,  1.50it/s]
 36%|███████████████████████████████████▉                                                                 | 79/222 [00:44<01:34,  1.51it/s]
 36%|████████████████████████████████████▍                                                                | 80/222 [00:45<01:42,  1.39it/s]
 36%|████████████████████████████████████▊                                                                | 81/222 [00:45<01:39,  1.42it/s]
 37%|█████████████████████████████████████▎                                                               | 82/222 [00:46<01:33,  1.50it/s]
 37%|█████████████████████████████████████▊                                                               | 83/222 [00:46<01:29,  1.56it/s]
 38%|██████████████████████████████████████▏                                                              | 84/222 [00:47<01:36,  1.44it/s]
 38%|██████████████████████████████████████▋                                                              | 85/222 [00:48<01:30,  1.51it/s]
 39%|███████████████████████████████████████▏                                                             | 86/222 [00:48<01:26,  1.58it/s]
 39%|███████████████████████████████████████▌                                                             | 87/222 [00:49<01:21,  1.66it/s]
 40%|████████████████████████████████████████                                                             | 88/222 [00:49<01:16,  1.76it/s]
 40%|████████████████████████████████████████▍                                                            | 89/222 [00:50<01:13,  1.81it/s]
 41%|████████████████████████████████████████▉                                                            | 90/222 [00:50<01:11,  1.83it/s]
 41%|█████████████████████████████████████████▍                                                           | 91/222 [00:51<01:19,  1.66it/s]
 41%|█████████████████████████████████████████▊                                                           | 92/222 [00:52<01:14,  1.73it/s]
 42%|██████████████████████████████████████████▎                                                          | 93/222 [00:52<01:13,  1.76it/s]
 42%|██████████████████████████████████████████▊                                                          | 94/222 [00:53<01:11,  1.79it/s]
 43%|███████████████████████████████████████████▏                                                         | 95/222 [00:53<01:08,  1.85it/s]
 43%|███████████████████████████████████████████▋                                                         | 96/222 [00:54<01:07,  1.88it/s]
 44%|████████████████████████████████████████████▏                                                        | 97/222 [00:54<01:05,  1.92it/s]
 44%|████████████████████████████████████████████▌                                                        | 98/222 [00:55<01:03,  1.96it/s]
 45%|█████████████████████████████████████████████                                                        | 99/222 [00:55<01:02,  1.97it/s]
 45%|█████████████████████████████████████████████                                                       | 100/222 [00:56<01:04,  1.88it/s]
 45%|█████████████████████████████████████████████▍                                                      | 101/222 [00:56<01:03,  1.90it/s]
 46%|█████████████████████████████████████████████▉                                                      | 102/222 [00:57<01:08,  1.76it/s]
 46%|██████████████████████████████████████████████▍                                                     | 103/222 [00:58<01:04,  1.86it/s]
 47%|██████████████████████████████████████████████▊                                                     | 104/222 [00:58<01:04,  1.84it/s]
 47%|███████████████████████████████████████████████▎                                                    | 105/222 [00:59<01:02,  1.86it/s]
 48%|███████████████████████████████████████████████▋                                                    | 106/222 [00:59<01:01,  1.87it/s]
 48%|████████████████████████████████████████████████▏                                                   | 107/222 [01:00<01:01,  1.88it/s]
 49%|████████████████████████████████████████████████▋                                                   | 108/222 [01:00<01:00,  1.87it/s]
 49%|█████████████████████████████████████████████████                                                   | 109/222 [01:01<01:02,  1.82it/s]
 50%|█████████████████████████████████████████████████▌                                                  | 110/222 [01:01<01:03,  1.76it/s]
 50%|██████████████████████████████████████████████████                                                  | 111/222 [01:02<01:01,  1.81it/s]
 50%|██████████████████████████████████████████████████▍                                                 | 112/222 [01:02<00:58,  1.87it/s]
 51%|██████████████████████████████████████████████████▉                                                 | 113/222 [01:03<01:06,  1.65it/s]
 51%|███████████████████████████████████████████████████▎                                                | 114/222 [01:04<01:02,  1.73it/s]
 52%|███████████████████████████████████████████████████▊                                                | 115/222 [01:04<00:59,  1.80it/s]
 52%|████████████████████████████████████████████████████▎                                               | 116/222 [01:05<00:56,  1.89it/s]
 53%|████████████████████████████████████████████████████▋                                               | 117/222 [01:05<00:58,  1.81it/s]
 53%|█████████████████████████████████████████████████████▏                                              | 118/222 [01:06<00:57,  1.82it/s]
 54%|█████████████████████████████████████████████████████▌                                              | 119/222 [01:06<00:55,  1.85it/s]
 54%|██████████████████████████████████████████████████████                                              | 120/222 [01:07<00:53,  1.91it/s]
 55%|██████████████████████████████████████████████████████▌                                             | 121/222 [01:07<00:50,  1.99it/s]
 55%|██████████████████████████████████████████████████████▉                                             | 122/222 [01:08<00:49,  2.04it/s]
 55%|███████████████████████████████████████████████████████▍                                            | 123/222 [01:08<00:48,  2.05it/s]
 56%|███████████████████████████████████████████████████████▊                                            | 124/222 [01:09<00:53,  1.83it/s]
 56%|████████████████████████████████████████████████████████▎                                           | 125/222 [01:09<00:50,  1.93it/s]
 57%|████████████████████████████████████████████████████████▊                                           | 126/222 [01:10<00:48,  1.99it/s]
 57%|█████████████████████████████████████████████████████████▏                                          | 127/222 [01:10<00:47,  1.99it/s]
 58%|█████████████████████████████████████████████████████████▋                                          | 128/222 [01:11<00:45,  2.05it/s]
 58%|██████████████████████████████████████████████████████████                                          | 129/222 [01:11<00:44,  2.09it/s]
 59%|██████████████████████████████████████████████████████████▌                                         | 130/222 [01:12<00:46,  1.96it/s]
 59%|███████████████████████████████████████████████████████████                                         | 131/222 [01:12<00:47,  1.90it/s]
 59%|███████████████████████████████████████████████████████████▍                                        | 132/222 [01:13<00:46,  1.95it/s]
 60%|███████████████████████████████████████████████████████████▉                                        | 133/222 [01:13<00:43,  2.03it/s]
 60%|████████████████████████████████████████████████████████████▎                                       | 134/222 [01:14<00:42,  2.08it/s]
 61%|████████████████████████████████████████████████████████████▊                                       | 135/222 [01:14<00:47,  1.84it/s]
 61%|█████████████████████████████████████████████████████████████▎                                      | 136/222 [01:15<00:45,  1.90it/s]
 62%|█████████████████████████████████████████████████████████████▋                                      | 137/222 [01:15<00:43,  1.98it/s]
 62%|██████████████████████████████████████████████████████████████▏                                     | 138/222 [01:16<00:42,  2.00it/s]
 63%|██████████████████████████████████████████████████████████████▌                                     | 139/222 [01:16<00:41,  2.01it/s]
 63%|███████████████████████████████████████████████████████████████                                     | 140/222 [01:17<00:40,  2.01it/s]
 64%|███████████████████████████████████████████████████████████████▌                                    | 141/222 [01:17<00:39,  2.03it/s]
 64%|███████████████████████████████████████████████████████████████▉                                    | 142/222 [01:18<00:38,  2.06it/s]
 64%|████████████████████████████████████████████████████████████████▍                                   | 143/222 [01:18<00:38,  2.06it/s]
 65%|████████████████████████████████████████████████████████████████▊                                   | 144/222 [01:19<00:37,  2.07it/s]
 65%|█████████████████████████████████████████████████████████████████▎                                  | 145/222 [01:19<00:36,  2.08it/s]
 66%|█████████████████████████████████████████████████████████████████▊                                  | 146/222 [01:20<00:41,  1.85it/s]
 66%|██████████████████████████████████████████████████████████████████▏                                 | 147/222 [01:20<00:40,  1.85it/s]
 67%|██████████████████████████████████████████████████████████████████▋                                 | 148/222 [01:21<00:39,  1.89it/s]
 67%|███████████████████████████████████████████████████████████████████                                 | 149/222 [01:21<00:37,  1.93it/s]
 68%|███████████████████████████████████████████████████████████████████▌                                | 150/222 [01:22<00:37,  1.92it/s]
 68%|████████████████████████████████████████████████████████████████████                                | 151/222 [01:23<00:37,  1.88it/s]
 68%|████████████████████████████████████████████████████████████████████▍                               | 152/222 [01:23<00:38,  1.81it/s]
 69%|████████████████████████████████████████████████████████████████████▉                               | 153/222 [01:24<00:38,  1.79it/s]
 69%|█████████████████████████████████████████████████████████████████████▎                              | 154/222 [01:24<00:36,  1.85it/s]
 70%|█████████████████████████████████████████████████████████████████████▊                              | 155/222 [01:25<00:36,  1.85it/s]
 70%|██████████████████████████████████████████████████████████████████████▎                             | 156/222 [01:25<00:35,  1.86it/s]
 71%|██████████████████████████████████████████████████████████████████████▋                             | 157/222 [01:26<00:39,  1.64it/s]
 71%|███████████████████████████████████████████████████████████████████████▏                            | 158/222 [01:27<00:38,  1.65it/s]
 72%|███████████████████████████████████████████████████████████████████████▌                            | 159/222 [01:27<00:37,  1.67it/s]
 72%|████████████████████████████████████████████████████████████████████████                            | 160/222 [01:28<00:35,  1.75it/s]
 73%|████████████████████████████████████████████████████████████████████████▌                           | 161/222 [01:28<00:33,  1.81it/s]
 73%|████████████████████████████████████████████████████████████████████████▉                           | 162/222 [01:29<00:31,  1.90it/s]
 73%|█████████████████████████████████████████████████████████████████████████▍                          | 163/222 [01:29<00:30,  1.95it/s]
 74%|█████████████████████████████████████████████████████████████████████████▊                          | 164/222 [01:30<00:30,  1.89it/s]
 74%|██████████████████████████████████████████████████████████████████████████▎                         | 165/222 [01:30<00:29,  1.95it/s]
 75%|██████████████████████████████████████████████████████████████████████████▊                         | 166/222 [01:31<00:28,  1.98it/s]
 75%|███████████████████████████████████████████████████████████████████████████▏                        | 167/222 [01:31<00:27,  2.01it/s]
 76%|███████████████████████████████████████████████████████████████████████████▋                        | 168/222 [01:32<00:31,  1.71it/s]
 76%|████████████████████████████████████████████████████████████████████████████▏                       | 169/222 [01:33<00:31,  1.69it/s]
 77%|████████████████████████████████████████████████████████████████████████████▌                       | 170/222 [01:33<00:30,  1.69it/s]
 77%|█████████████████████████████████████████████████████████████████████████████                       | 171/222 [01:34<00:29,  1.74it/s]
 77%|█████████████████████████████████████████████████████████████████████████████▍                      | 172/222 [01:34<00:27,  1.79it/s]
 78%|█████████████████████████████████████████████████████████████████████████████▉                      | 173/222 [01:35<00:27,  1.77it/s]
 78%|██████████████████████████████████████████████████████████████████████████████▍                     | 174/222 [01:35<00:26,  1.81it/s]
 79%|██████████████████████████████████████████████████████████████████████████████▊                     | 175/222 [01:36<00:25,  1.83it/s]
 79%|███████████████████████████████████████████████████████████████████████████████▎                    | 176/222 [01:36<00:24,  1.87it/s]
 80%|███████████████████████████████████████████████████████████████████████████████▋                    | 177/222 [01:37<00:27,  1.65it/s]
 80%|████████████████████████████████████████████████████████████████████████████████▏                   | 178/222 [01:38<00:29,  1.48it/s]
 81%|████████████████████████████████████████████████████████████████████████████████▋                   | 179/222 [01:39<00:34,  1.25it/s]
 81%|█████████████████████████████████████████████████████████████████████████████████                   | 180/222 [01:40<00:31,  1.32it/s]
 82%|█████████████████████████████████████████████████████████████████████████████████▌                  | 181/222 [01:41<00:34,  1.19it/s]
 82%|█████████████████████████████████████████████████████████████████████████████████▉                  | 182/222 [01:42<00:37,  1.06it/s]
 82%|██████████████████████████████████████████████████████████████████████████████████▍                 | 183/222 [01:43<00:33,  1.17it/s]
 83%|██████████████████████████████████████████████████████████████████████████████████▉                 | 184/222 [01:44<00:32,  1.16it/s]
 83%|███████████████████████████████████████████████████████████████████████████████████▎                | 185/222 [01:44<00:30,  1.21it/s]
 84%|███████████████████████████████████████████████████████████████████████████████████▊                | 186/222 [01:45<00:29,  1.20it/s]
 84%|████████████████████████████████████████████████████████████████████████████████████▏               | 187/222 [01:46<00:27,  1.27it/s]
 85%|████████████████████████████████████████████████████████████████████████████████████▋               | 188/222 [01:46<00:25,  1.33it/s]
 85%|█████████████████████████████████████████████████████████████████████████████████████▏              | 189/222 [01:47<00:24,  1.36it/s]
 86%|█████████████████████████████████████████████████████████████████████████████████████▌              | 190/222 [01:48<00:25,  1.25it/s]
 86%|██████████████████████████████████████████████████████████████████████████████████████              | 191/222 [01:49<00:24,  1.28it/s]
 86%|██████████████████████████████████████████████████████████████████████████████████████▍             | 192/222 [01:50<00:22,  1.32it/s]
 87%|██████████████████████████████████████████████████████████████████████████████████████▉             | 193/222 [01:50<00:20,  1.38it/s]
 87%|███████████████████████████████████████████████████████████████████████████████████████▍            | 194/222 [01:51<00:20,  1.37it/s]
 88%|███████████████████████████████████████████████████████████████████████████████████████▊            | 195/222 [01:52<00:19,  1.40it/s]
 88%|████████████████████████████████████████████████████████████████████████████████████████▎           | 196/222 [01:52<00:17,  1.49it/s]
 89%|████████████████████████████████████████████████████████████████████████████████████████▋           | 197/222 [01:53<00:16,  1.56it/s]
 89%|█████████████████████████████████████████████████████████████████████████████████████████▏          | 198/222 [01:53<00:15,  1.58it/s]
 90%|█████████████████████████████████████████████████████████████████████████████████████████▋          | 199/222 [01:54<00:13,  1.69it/s]
 90%|██████████████████████████████████████████████████████████████████████████████████████████          | 200/222 [01:54<00:12,  1.78it/s]
 91%|██████████████████████████████████████████████████████████████████████████████████████████▌         | 201/222 [01:55<00:13,  1.59it/s]
 91%|██████████████████████████████████████████████████████████████████████████████████████████▉         | 202/222 [01:56<00:11,  1.70it/s]
 91%|███████████████████████████████████████████████████████████████████████████████████████████▍        | 203/222 [01:56<00:10,  1.77it/s]
 92%|███████████████████████████████████████████████████████████████████████████████████████████▉        | 204/222 [01:57<00:09,  1.86it/s]
 92%|████████████████████████████████████████████████████████████████████████████████████████████▎       | 205/222 [01:57<00:08,  1.89it/s]
 93%|████████████████████████████████████████████████████████████████████████████████████████████▊       | 206/222 [01:58<00:08,  1.91it/s]
 93%|█████████████████████████████████████████████████████████████████████████████████████████████▏      | 207/222 [01:58<00:07,  1.96it/s]
 94%|█████████████████████████████████████████████████████████████████████████████████████████████▋      | 208/222 [01:59<00:06,  2.03it/s]
 94%|██████████████████████████████████████████████████████████████████████████████████████████████▏     | 209/222 [01:59<00:06,  2.00it/s]
 95%|██████████████████████████████████████████████████████████████████████████████████████████████▌     | 210/222 [02:00<00:05,  2.00it/s]
 95%|███████████████████████████████████████████████████████████████████████████████████████████████     | 211/222 [02:00<00:05,  1.95it/s]
 95%|███████████████████████████████████████████████████████████████████████████████████████████████▍    | 212/222 [02:01<00:05,  1.71it/s]
 96%|███████████████████████████████████████████████████████████████████████████████████████████████▉    | 213/222 [02:01<00:05,  1.74it/s]
 96%|████████████████████████████████████████████████████████████████████████████████████████████████▍   | 214/222 [02:02<00:04,  1.80it/s]
 97%|████████████████████████████████████████████████████████████████████████████████████████████████▊   | 215/222 [02:02<00:03,  1.85it/s]
 97%|█████████████████████████████████████████████████████████████████████████████████████████████████▎  | 216/222 [02:03<00:03,  1.90it/s]
 98%|█████████████████████████████████████████████████████████████████████████████████████████████████▋  | 217/222 [02:03<00:02,  1.98it/s]
 98%|██████████████████████████████████████████████████████████████████████████████████████████████████▏ | 218/222 [02:04<00:01,  2.03it/s]
 99%|██████████████████████████████████████████████████████████████████████████████████████████████████▋ | 219/222 [02:04<00:01,  2.04it/s]
 99%|███████████████████████████████████████████████████████████████████████████████████████████████████ | 220/222 [02:05<00:00,  2.02it/s]
100%|███████████████████████████████████████████████████████████████████████████████████████████████████▌| 221/222 [02:05<00:00,  2.02it/s]
[MoviePy] Done.
[MoviePy] >>>> Video ready: white.mp4 

Wall time: 2min 7s

Play the video inline, or if you prefer find the video in your filesystem (should be in the same directory) and play it in your video player of choice.

In [8]:
HTML("""
<video width="960" height="540" controls>
  <source src="{0}">
</video>
""".format(white_output))
Out[8]:

At this point, if you were successful you probably have the Hough line segments drawn onto the road, but what about identifying the full extent of the lane and marking it clearly as in the example video (P1_example.mp4)? Think about defining a line to run the full length of the visible lane based on the line segments you identified with the Hough Transform. Modify your draw_lines function accordingly and try re-running your pipeline.

Now for the one with the solid yellow lane on the left. This one's more tricky!

In [9]:
yellow_output = 'yellow.mp4'
clip2 = VideoFileClip('solidYellowLeft.mp4')
yellow_clip = clip2.fl_image(process_image)
%time yellow_clip.write_videofile(yellow_output, audio=False)
[MoviePy] >>>> Building video yellow.mp4
[MoviePy] Writing video yellow.mp4
  0%|                                                                                                              | 0/682 [00:00<?, ?it/s]
  0%|▏                                                                                                     | 1/682 [00:00<07:54,  1.44it/s]
  0%|▎                                                                                                     | 2/682 [00:01<07:11,  1.58it/s]
  0%|▍                                                                                                     | 3/682 [00:01<06:45,  1.68it/s]
  1%|▌                                                                                                     | 4/682 [00:02<06:25,  1.76it/s]
  1%|▋                                                                                                     | 5/682 [00:02<06:30,  1.73it/s]
  1%|▉                                                                                                     | 6/682 [00:03<06:21,  1.77it/s]
  1%|█                                                                                                     | 7/682 [00:03<05:58,  1.88it/s]
  1%|█▏                                                                                                    | 8/682 [00:04<05:52,  1.91it/s]
  1%|█▎                                                                                                    | 9/682 [00:04<05:50,  1.92it/s]
  1%|█▍                                                                                                   | 10/682 [00:05<05:42,  1.96it/s]
  2%|█▋                                                                                                   | 11/682 [00:05<05:43,  1.96it/s]
  2%|█▊                                                                                                   | 12/682 [00:06<06:24,  1.74it/s]
  2%|█▉                                                                                                   | 13/682 [00:07<06:09,  1.81it/s]
  2%|██                                                                                                   | 14/682 [00:07<05:55,  1.88it/s]
  2%|██▏                                                                                                  | 15/682 [00:07<05:40,  1.96it/s]
  2%|██▎                                                                                                  | 16/682 [00:08<05:26,  2.04it/s]
  2%|██▌                                                                                                  | 17/682 [00:08<05:20,  2.07it/s]
  3%|██▋                                                                                                  | 18/682 [00:09<05:17,  2.09it/s]
  3%|██▊                                                                                                  | 19/682 [00:09<05:22,  2.05it/s]
  3%|██▉                                                                                                  | 20/682 [00:10<05:21,  2.06it/s]
  3%|███                                                                                                  | 21/682 [00:10<05:23,  2.04it/s]
  3%|███▎                                                                                                 | 22/682 [00:11<05:25,  2.03it/s]
  3%|███▍                                                                                                 | 23/682 [00:12<06:14,  1.76it/s]
  4%|███▌                                                                                                 | 24/682 [00:12<06:03,  1.81it/s]
  4%|███▋                                                                                                 | 25/682 [00:13<05:44,  1.90it/s]
  4%|███▊                                                                                                 | 26/682 [00:13<05:30,  1.99it/s]
  4%|███▉                                                                                                 | 27/682 [00:13<05:24,  2.02it/s]
  4%|████▏                                                                                                | 28/682 [00:14<05:42,  1.91it/s]
  4%|████▎                                                                                                | 29/682 [00:15<06:01,  1.81it/s]
  4%|████▍                                                                                                | 30/682 [00:15<05:54,  1.84it/s]
  5%|████▌                                                                                                | 31/682 [00:16<05:37,  1.93it/s]
  5%|████▋                                                                                                | 32/682 [00:16<05:28,  1.98it/s]
  5%|████▉                                                                                                | 33/682 [00:17<05:22,  2.02it/s]
  5%|█████                                                                                                | 34/682 [00:17<05:50,  1.85it/s]
  5%|█████▏                                                                                               | 35/682 [00:18<05:32,  1.95it/s]
  5%|█████▎                                                                                               | 36/682 [00:18<05:33,  1.94it/s]
  5%|█████▍                                                                                               | 37/682 [00:19<05:31,  1.95it/s]
  6%|█████▋                                                                                               | 38/682 [00:19<05:32,  1.94it/s]
  6%|█████▊                                                                                               | 39/682 [00:20<05:30,  1.94it/s]
  6%|█████▉                                                                                               | 40/682 [00:21<06:13,  1.72it/s]
  6%|██████                                                                                               | 41/682 [00:21<07:16,  1.47it/s]
  6%|██████▏                                                                                              | 42/682 [00:22<07:21,  1.45it/s]
  6%|██████▎                                                                                              | 43/682 [00:23<06:49,  1.56it/s]
  6%|██████▌                                                                                              | 44/682 [00:23<06:28,  1.64it/s]
  7%|██████▋                                                                                              | 45/682 [00:24<06:45,  1.57it/s]
  7%|██████▊                                                                                              | 46/682 [00:24<06:33,  1.61it/s]
  7%|██████▉                                                                                              | 47/682 [00:25<06:15,  1.69it/s]
  7%|███████                                                                                              | 48/682 [00:26<06:06,  1.73it/s]
  7%|███████▎                                                                                             | 49/682 [00:26<05:53,  1.79it/s]
  7%|███████▍                                                                                             | 50/682 [00:27<06:01,  1.75it/s]
  7%|███████▌                                                                                             | 51/682 [00:27<06:04,  1.73it/s]
  8%|███████▋                                                                                             | 52/682 [00:28<05:50,  1.80it/s]
  8%|███████▊                                                                                             | 53/682 [00:28<05:36,  1.87it/s]
  8%|███████▉                                                                                             | 54/682 [00:29<05:23,  1.94it/s]
  8%|████████▏                                                                                            | 55/682 [00:29<05:30,  1.90it/s]
  8%|████████▎                                                                                            | 56/682 [00:30<06:04,  1.72it/s]
  8%|████████▍                                                                                            | 57/682 [00:31<05:57,  1.75it/s]
  9%|████████▌                                                                                            | 58/682 [00:31<05:51,  1.78it/s]
  9%|████████▋                                                                                            | 59/682 [00:32<05:45,  1.80it/s]
  9%|████████▉                                                                                            | 60/682 [00:32<05:40,  1.83it/s]
  9%|█████████                                                                                            | 61/682 [00:33<05:40,  1.83it/s]
  9%|█████████▏                                                                                           | 62/682 [00:33<05:45,  1.80it/s]
  9%|█████████▎                                                                                           | 63/682 [00:34<05:28,  1.88it/s]
  9%|█████████▍                                                                                           | 64/682 [00:34<05:23,  1.91it/s]
 10%|█████████▋                                                                                           | 65/682 [00:35<05:18,  1.94it/s]
 10%|█████████▊                                                                                           | 66/682 [00:35<05:17,  1.94it/s]
 10%|█████████▉                                                                                           | 67/682 [00:36<06:00,  1.71it/s]
 10%|██████████                                                                                           | 68/682 [00:37<06:20,  1.61it/s]
 10%|██████████▏                                                                                          | 69/682 [00:37<06:41,  1.53it/s]
 10%|██████████▎                                                                                          | 70/682 [00:38<06:23,  1.60it/s]
 10%|██████████▌                                                                                          | 71/682 [00:39<06:01,  1.69it/s]
 11%|██████████▋                                                                                          | 72/682 [00:39<05:44,  1.77it/s]
 11%|██████████▊                                                                                          | 73/682 [00:40<05:36,  1.81it/s]
 11%|██████████▉                                                                                          | 74/682 [00:40<05:27,  1.85it/s]
 11%|███████████                                                                                          | 75/682 [00:41<05:20,  1.90it/s]
 11%|███████████▎                                                                                         | 76/682 [00:41<05:13,  1.94it/s]
 11%|███████████▍                                                                                         | 77/682 [00:42<05:11,  1.94it/s]
 11%|███████████▌                                                                                         | 78/682 [00:42<05:42,  1.76it/s]
 12%|███████████▋                                                                                         | 79/682 [00:43<05:24,  1.86it/s]
 12%|███████████▊                                                                                         | 80/682 [00:43<05:12,  1.93it/s]
 12%|███████████▉                                                                                         | 81/682 [00:44<05:03,  1.98it/s]
 12%|████████████▏                                                                                        | 82/682 [00:44<05:05,  1.96it/s]
 12%|████████████▎                                                                                        | 83/682 [00:45<05:04,  1.97it/s]
 12%|████████████▍                                                                                        | 84/682 [00:45<05:07,  1.94it/s]
 12%|████████████▌                                                                                        | 85/682 [00:46<05:04,  1.96it/s]
 13%|████████████▋                                                                                        | 86/682 [00:46<05:11,  1.91it/s]
 13%|████████████▉                                                                                        | 87/682 [00:47<05:14,  1.89it/s]
 13%|█████████████                                                                                        | 88/682 [00:47<05:09,  1.92it/s]
 13%|█████████████▏                                                                                       | 89/682 [00:48<05:32,  1.78it/s]
 13%|█████████████▎                                                                                       | 90/682 [00:49<05:28,  1.80it/s]
 13%|█████████████▍                                                                                       | 91/682 [00:49<05:17,  1.86it/s]
 13%|█████████████▌                                                                                       | 92/682 [00:50<05:19,  1.85it/s]
 14%|█████████████▊                                                                                       | 93/682 [00:50<05:11,  1.89it/s]
 14%|█████████████▉                                                                                       | 94/682 [00:51<05:10,  1.90it/s]
 14%|██████████████                                                                                       | 95/682 [00:51<05:03,  1.94it/s]
 14%|██████████████▏                                                                                      | 96/682 [00:52<05:01,  1.95it/s]
 14%|██████████████▎                                                                                      | 97/682 [00:52<05:00,  1.94it/s]
 14%|██████████████▌                                                                                      | 98/682 [00:53<04:56,  1.97it/s]
 15%|██████████████▋                                                                                      | 99/682 [00:53<04:53,  1.98it/s]
 15%|██████████████▋                                                                                     | 100/682 [00:54<05:18,  1.83it/s]
 15%|██████████████▊                                                                                     | 101/682 [00:54<05:11,  1.87it/s]
 15%|██████████████▉                                                                                     | 102/682 [00:55<05:01,  1.92it/s]
 15%|███████████████                                                                                     | 103/682 [00:55<05:01,  1.92it/s]
 15%|███████████████▏                                                                                    | 104/682 [00:56<04:55,  1.96it/s]
 15%|███████████████▍                                                                                    | 105/682 [00:56<04:54,  1.96it/s]
 16%|███████████████▌                                                                                    | 106/682 [00:57<05:27,  1.76it/s]
 16%|███████████████▋                                                                                    | 107/682 [00:57<05:20,  1.79it/s]
 16%|███████████████▊                                                                                    | 108/682 [00:58<05:05,  1.88it/s]
 16%|███████████████▉                                                                                    | 109/682 [00:58<04:57,  1.93it/s]
 16%|████████████████▏                                                                                   | 110/682 [00:59<04:51,  1.96it/s]
 16%|████████████████▎                                                                                   | 111/682 [01:00<05:40,  1.68it/s]
 16%|████████████████▍                                                                                   | 112/682 [01:00<05:30,  1.72it/s]
 17%|████████████████▌                                                                                   | 113/682 [01:01<05:22,  1.76it/s]
 17%|████████████████▋                                                                                   | 114/682 [01:01<05:30,  1.72it/s]
 17%|████████████████▊                                                                                   | 115/682 [01:02<05:27,  1.73it/s]
 17%|█████████████████                                                                                   | 116/682 [01:03<05:19,  1.77it/s]
 17%|█████████████████▏                                                                                  | 117/682 [01:03<05:04,  1.86it/s]
 17%|█████████████████▎                                                                                  | 118/682 [01:03<04:52,  1.93it/s]
 17%|█████████████████▍                                                                                  | 119/682 [01:04<04:53,  1.92it/s]
 18%|█████████████████▌                                                                                  | 120/682 [01:05<04:57,  1.89it/s]
 18%|█████████████████▋                                                                                  | 121/682 [01:05<05:08,  1.82it/s]
 18%|█████████████████▉                                                                                  | 122/682 [01:06<05:55,  1.57it/s]
 18%|██████████████████                                                                                  | 123/682 [01:07<05:55,  1.57it/s]
 18%|██████████████████▏                                                                                 | 124/682 [01:07<05:30,  1.69it/s]
 18%|██████████████████▎                                                                                 | 125/682 [01:08<05:19,  1.75it/s]
 18%|██████████████████▍                                                                                 | 126/682 [01:08<05:07,  1.81it/s]
 19%|██████████████████▌                                                                                 | 127/682 [01:09<05:07,  1.80it/s]
 19%|██████████████████▊                                                                                 | 128/682 [01:09<05:04,  1.82it/s]
 19%|██████████████████▉                                                                                 | 129/682 [01:10<05:00,  1.84it/s]
 19%|███████████████████                                                                                 | 130/682 [01:10<05:00,  1.84it/s]
 19%|███████████████████▏                                                                                | 131/682 [01:11<04:54,  1.87it/s]
 19%|███████████████████▎                                                                                | 132/682 [01:11<04:47,  1.91it/s]
 20%|███████████████████▌                                                                                | 133/682 [01:12<05:14,  1.74it/s]
 20%|███████████████████▋                                                                                | 134/682 [01:13<05:02,  1.81it/s]
 20%|███████████████████▊                                                                                | 135/682 [01:13<04:46,  1.91it/s]
 20%|███████████████████▉                                                                                | 136/682 [01:13<04:36,  1.98it/s]
 20%|████████████████████                                                                                | 137/682 [01:14<04:28,  2.03it/s]
 20%|████████████████████▏                                                                               | 138/682 [01:14<04:32,  2.00it/s]
 20%|████████████████████▍                                                                               | 139/682 [01:15<04:33,  1.99it/s]
 21%|████████████████████▌                                                                               | 140/682 [01:16<04:59,  1.81it/s]
 21%|████████████████████▋                                                                               | 141/682 [01:16<05:17,  1.70it/s]
 21%|████████████████████▊                                                                               | 142/682 [01:17<05:01,  1.79it/s]
 21%|████████████████████▉                                                                               | 143/682 [01:17<04:54,  1.83it/s]
 21%|█████████████████████                                                                               | 144/682 [01:18<05:09,  1.74it/s]
 21%|█████████████████████▎                                                                              | 145/682 [01:18<05:04,  1.76it/s]
 21%|█████████████████████▍                                                                              | 146/682 [01:19<04:55,  1.81it/s]
 22%|█████████████████████▌                                                                              | 147/682 [01:19<04:48,  1.86it/s]
 22%|█████████████████████▋                                                                              | 148/682 [01:20<04:39,  1.91it/s]
 22%|█████████████████████▊                                                                              | 149/682 [01:20<04:36,  1.93it/s]
 22%|█████████████████████▉                                                                              | 150/682 [01:21<04:36,  1.92it/s]
 22%|██████████████████████▏                                                                             | 151/682 [01:21<04:30,  1.97it/s]
 22%|██████████████████████▎                                                                             | 152/682 [01:22<04:30,  1.96it/s]
 22%|██████████████████████▍                                                                             | 153/682 [01:23<05:27,  1.62it/s]
 23%|██████████████████████▌                                                                             | 154/682 [01:24<05:31,  1.59it/s]
 23%|██████████████████████▋                                                                             | 155/682 [01:24<06:10,  1.42it/s]
 23%|██████████████████████▊                                                                             | 156/682 [01:25<05:35,  1.57it/s]
 23%|███████████████████████                                                                             | 157/682 [01:25<05:19,  1.64it/s]
 23%|███████████████████████▏                                                                            | 158/682 [01:26<05:41,  1.53it/s]
 23%|███████████████████████▎                                                                            | 159/682 [01:27<05:33,  1.57it/s]
 23%|███████████████████████▍                                                                            | 160/682 [01:27<05:41,  1.53it/s]
 24%|███████████████████████▌                                                                            | 161/682 [01:28<05:25,  1.60it/s]
 24%|███████████████████████▊                                                                            | 162/682 [01:29<05:02,  1.72it/s]
 24%|███████████████████████▉                                                                            | 163/682 [01:29<04:45,  1.82it/s]
 24%|████████████████████████                                                                            | 164/682 [01:30<04:37,  1.87it/s]
 24%|████████████████████████▏                                                                           | 165/682 [01:30<04:30,  1.91it/s]
 24%|████████████████████████▎                                                                           | 166/682 [01:31<04:58,  1.73it/s]
 24%|████████████████████████▍                                                                           | 167/682 [01:31<04:43,  1.81it/s]
 25%|████████████████████████▋                                                                           | 168/682 [01:32<04:35,  1.87it/s]
 25%|████████████████████████▊                                                                           | 169/682 [01:32<04:29,  1.91it/s]
 25%|████████████████████████▉                                                                           | 170/682 [01:33<04:20,  1.97it/s]
 25%|█████████████████████████                                                                           | 171/682 [01:33<04:17,  1.98it/s]
 25%|█████████████████████████▏                                                                          | 172/682 [01:34<04:09,  2.04it/s]
 25%|█████████████████████████▎                                                                          | 173/682 [01:34<04:08,  2.05it/s]
 26%|█████████████████████████▌                                                                          | 174/682 [01:35<04:08,  2.05it/s]
 26%|█████████████████████████▋                                                                          | 175/682 [01:35<04:07,  2.04it/s]
 26%|█████████████████████████▊                                                                          | 176/682 [01:36<04:08,  2.03it/s]
 26%|█████████████████████████▉                                                                          | 177/682 [01:36<04:36,  1.82it/s]
 26%|██████████████████████████                                                                          | 178/682 [01:37<04:28,  1.88it/s]
 26%|██████████████████████████▏                                                                         | 179/682 [01:37<04:22,  1.92it/s]
 26%|██████████████████████████▍                                                                         | 180/682 [01:38<04:13,  1.98it/s]
 27%|██████████████████████████▌                                                                         | 181/682 [01:38<04:05,  2.04it/s]
 27%|██████████████████████████▋                                                                         | 182/682 [01:39<04:00,  2.08it/s]
 27%|██████████████████████████▊                                                                         | 183/682 [01:39<04:00,  2.07it/s]
 27%|██████████████████████████▉                                                                         | 184/682 [01:40<04:08,  2.00it/s]
 27%|███████████████████████████▏                                                                        | 185/682 [01:40<04:07,  2.01it/s]
 27%|███████████████████████████▎                                                                        | 186/682 [01:41<04:03,  2.04it/s]
 27%|███████████████████████████▍                                                                        | 187/682 [01:41<04:01,  2.05it/s]
 28%|███████████████████████████▌                                                                        | 188/682 [01:42<04:36,  1.79it/s]
 28%|███████████████████████████▋                                                                        | 189/682 [01:42<04:27,  1.84it/s]
 28%|███████████████████████████▊                                                                        | 190/682 [01:43<04:16,  1.92it/s]
 28%|████████████████████████████                                                                        | 191/682 [01:43<04:09,  1.97it/s]
 28%|████████████████████████████▏                                                                       | 192/682 [01:44<04:02,  2.02it/s]
 28%|████████████████████████████▎                                                                       | 193/682 [01:44<04:02,  2.02it/s]
 28%|████████████████████████████▍                                                                       | 194/682 [01:45<04:03,  2.01it/s]
 29%|████████████████████████████▌                                                                       | 195/682 [01:45<04:04,  1.99it/s]
 29%|████████████████████████████▋                                                                       | 196/682 [01:46<04:03,  2.00it/s]
 29%|████████████████████████████▉                                                                       | 197/682 [01:46<04:00,  2.01it/s]
 29%|█████████████████████████████                                                                       | 198/682 [01:47<03:59,  2.02it/s]
 29%|█████████████████████████████▏                                                                      | 199/682 [01:47<04:24,  1.83it/s]
 29%|█████████████████████████████▎                                                                      | 200/682 [01:48<04:11,  1.91it/s]
 29%|█████████████████████████████▍                                                                      | 201/682 [01:48<04:02,  1.99it/s]
 30%|█████████████████████████████▌                                                                      | 202/682 [01:49<03:59,  2.00it/s]
 30%|█████████████████████████████▊                                                                      | 203/682 [01:49<03:58,  2.00it/s]
 30%|█████████████████████████████▉                                                                      | 204/682 [01:50<03:54,  2.03it/s]
 30%|██████████████████████████████                                                                      | 205/682 [01:50<03:56,  2.02it/s]
 30%|██████████████████████████████▏                                                                     | 206/682 [01:51<03:54,  2.03it/s]
 30%|██████████████████████████████▎                                                                     | 207/682 [01:51<03:57,  2.00it/s]
 30%|██████████████████████████████▍                                                                     | 208/682 [01:52<03:54,  2.02it/s]
 31%|██████████████████████████████▋                                                                     | 209/682 [01:52<03:59,  1.98it/s]
 31%|██████████████████████████████▊                                                                     | 210/682 [01:53<04:26,  1.77it/s]
 31%|██████████████████████████████▉                                                                     | 211/682 [01:54<04:18,  1.82it/s]
 31%|███████████████████████████████                                                                     | 212/682 [01:54<04:05,  1.91it/s]
 31%|███████████████████████████████▏                                                                    | 213/682 [01:54<04:02,  1.94it/s]
 31%|███████████████████████████████▍                                                                    | 214/682 [01:55<04:00,  1.94it/s]
 32%|███████████████████████████████▌                                                                    | 215/682 [01:55<03:58,  1.96it/s]
 32%|███████████████████████████████▋                                                                    | 216/682 [01:56<03:53,  1.99it/s]
 32%|███████████████████████████████▊                                                                    | 217/682 [01:57<03:55,  1.97it/s]
 32%|███████████████████████████████▉                                                                    | 218/682 [01:57<04:38,  1.67it/s]
 32%|████████████████████████████████                                                                    | 219/682 [01:58<04:27,  1.73it/s]
 32%|████████████████████████████████▎                                                                   | 220/682 [01:58<04:18,  1.78it/s]
 32%|████████████████████████████████▍                                                                   | 221/682 [01:59<04:41,  1.63it/s]
 33%|████████████████████████████████▌                                                                   | 222/682 [02:00<04:34,  1.68it/s]
 33%|████████████████████████████████▋                                                                   | 223/682 [02:00<04:30,  1.69it/s]
 33%|████████████████████████████████▊                                                                   | 224/682 [02:01<04:21,  1.75it/s]
 33%|████████████████████████████████▉                                                                   | 225/682 [02:01<04:11,  1.82it/s]
 33%|█████████████████████████████████▏                                                                  | 226/682 [02:02<04:07,  1.85it/s]
 33%|█████████████████████████████████▎                                                                  | 227/682 [02:02<04:05,  1.85it/s]
 33%|█████████████████████████████████▍                                                                  | 228/682 [02:03<04:02,  1.87it/s]
 34%|█████████████████████████████████▌                                                                  | 229/682 [02:03<03:58,  1.90it/s]
 34%|█████████████████████████████████▋                                                                  | 230/682 [02:04<03:51,  1.96it/s]
 34%|█████████████████████████████████▊                                                                  | 231/682 [02:04<03:45,  2.00it/s]
 34%|██████████████████████████████████                                                                  | 232/682 [02:05<04:10,  1.80it/s]
 34%|██████████████████████████████████▏                                                                 | 233/682 [02:05<04:02,  1.86it/s]
 34%|██████████████████████████████████▎                                                                 | 234/682 [02:06<03:55,  1.90it/s]
 34%|██████████████████████████████████▍                                                                 | 235/682 [02:06<03:53,  1.91it/s]
 35%|██████████████████████████████████▌                                                                 | 236/682 [02:07<03:50,  1.94it/s]
 35%|██████████████████████████████████▊                                                                 | 237/682 [02:07<03:44,  1.98it/s]
 35%|██████████████████████████████████▉                                                                 | 238/682 [02:08<03:41,  2.01it/s]
 35%|███████████████████████████████████                                                                 | 239/682 [02:08<03:43,  1.99it/s]
 35%|███████████████████████████████████▏                                                                | 240/682 [02:09<03:45,  1.96it/s]
 35%|███████████████████████████████████▎                                                                | 241/682 [02:10<03:49,  1.92it/s]
 35%|███████████████████████████████████▍                                                                | 242/682 [02:10<03:48,  1.92it/s]
 36%|███████████████████████████████████▋                                                                | 243/682 [02:11<04:11,  1.75it/s]
 36%|███████████████████████████████████▊                                                                | 244/682 [02:11<04:06,  1.78it/s]
 36%|███████████████████████████████████▉                                                                | 245/682 [02:12<04:00,  1.82it/s]
 36%|████████████████████████████████████                                                                | 246/682 [02:12<03:54,  1.86it/s]
 36%|████████████████████████████████████▏                                                               | 247/682 [02:13<03:43,  1.94it/s]
 36%|████████████████████████████████████▎                                                               | 248/682 [02:13<03:37,  2.00it/s]
 37%|████████████████████████████████████▌                                                               | 249/682 [02:14<03:30,  2.05it/s]
 37%|████████████████████████████████████▋                                                               | 250/682 [02:14<03:31,  2.05it/s]
 37%|████████████████████████████████████▊                                                               | 251/682 [02:15<03:28,  2.07it/s]
 37%|████████████████████████████████████▉                                                               | 252/682 [02:15<03:32,  2.02it/s]
 37%|█████████████████████████████████████                                                               | 253/682 [02:16<03:32,  2.02it/s]
 37%|█████████████████████████████████████▏                                                              | 254/682 [02:16<04:08,  1.72it/s]
 37%|█████████████████████████████████████▍                                                              | 255/682 [02:17<04:20,  1.64it/s]
 38%|█████████████████████████████████████▌                                                              | 256/682 [02:18<04:22,  1.62it/s]
 38%|█████████████████████████████████████▋                                                              | 257/682 [02:18<04:04,  1.74it/s]
 38%|█████████████████████████████████████▊                                                              | 258/682 [02:19<03:52,  1.82it/s]
 38%|█████████████████████████████████████▉                                                              | 259/682 [02:19<03:51,  1.83it/s]
 38%|██████████████████████████████████████                                                              | 260/682 [02:20<03:42,  1.90it/s]
 38%|██████████████████████████████████████▎                                                             | 261/682 [02:20<03:40,  1.91it/s]
 38%|██████████████████████████████████████▍                                                             | 262/682 [02:21<03:47,  1.84it/s]
 39%|██████████████████████████████████████▌                                                             | 263/682 [02:21<03:51,  1.81it/s]
 39%|██████████████████████████████████████▋                                                             | 264/682 [02:22<03:59,  1.75it/s]
 39%|██████████████████████████████████████▊                                                             | 265/682 [02:23<04:26,  1.57it/s]
 39%|███████████████████████████████████████                                                             | 266/682 [02:23<04:08,  1.68it/s]
 39%|███████████████████████████████████████▏                                                            | 267/682 [02:24<03:55,  1.76it/s]
 39%|███████████████████████████████████████▎                                                            | 268/682 [02:24<03:49,  1.80it/s]
 39%|███████████████████████████████████████▍                                                            | 269/682 [02:25<03:57,  1.74it/s]
 40%|███████████████████████████████████████▌                                                            | 270/682 [02:26<03:57,  1.74it/s]
 40%|███████████████████████████████████████▋                                                            | 271/682 [02:26<03:57,  1.73it/s]
 40%|███████████████████████████████████████▉                                                            | 272/682 [02:27<03:53,  1.76it/s]
 40%|████████████████████████████████████████                                                            | 273/682 [02:27<04:03,  1.68it/s]
 40%|████████████████████████████████████████▏                                                           | 274/682 [02:28<03:59,  1.70it/s]
 40%|████████████████████████████████████████▎                                                           | 275/682 [02:28<03:45,  1.81it/s]
 40%|████████████████████████████████████████▍                                                           | 276/682 [02:29<04:05,  1.66it/s]
 41%|████████████████████████████████████████▌                                                           | 277/682 [02:30<03:54,  1.73it/s]
 41%|████████████████████████████████████████▊                                                           | 278/682 [02:30<03:51,  1.75it/s]
 41%|████████████████████████████████████████▉                                                           | 279/682 [02:31<03:43,  1.80it/s]
 41%|█████████████████████████████████████████                                                           | 280/682 [02:31<03:40,  1.82it/s]
 41%|█████████████████████████████████████████▏                                                          | 281/682 [02:32<03:35,  1.86it/s]
 41%|█████████████████████████████████████████▎                                                          | 282/682 [02:32<03:44,  1.78it/s]
 41%|█████████████████████████████████████████▍                                                          | 283/682 [02:33<03:33,  1.87it/s]
 42%|█████████████████████████████████████████▋                                                          | 284/682 [02:33<03:25,  1.94it/s]
 42%|█████████████████████████████████████████▊                                                          | 285/682 [02:34<03:21,  1.97it/s]
 42%|█████████████████████████████████████████▉                                                          | 286/682 [02:34<03:24,  1.94it/s]
 42%|██████████████████████████████████████████                                                          | 287/682 [02:35<03:45,  1.75it/s]
 42%|██████████████████████████████████████████▏                                                         | 288/682 [02:36<03:39,  1.80it/s]
 42%|██████████████████████████████████████████▍                                                         | 289/682 [02:36<03:29,  1.87it/s]
 43%|██████████████████████████████████████████▌                                                         | 290/682 [02:37<03:28,  1.88it/s]
 43%|██████████████████████████████████████████▋                                                         | 291/682 [02:37<03:25,  1.90it/s]
 43%|██████████████████████████████████████████▊                                                         | 292/682 [02:38<03:20,  1.95it/s]
 43%|██████████████████████████████████████████▉                                                         | 293/682 [02:38<03:12,  2.02it/s]
 43%|███████████████████████████████████████████                                                         | 294/682 [02:39<03:10,  2.04it/s]
 43%|███████████████████████████████████████████▎                                                        | 295/682 [02:39<03:08,  2.05it/s]
 43%|███████████████████████████████████████████▍                                                        | 296/682 [02:39<03:08,  2.05it/s]
 44%|███████████████████████████████████████████▌                                                        | 297/682 [02:40<03:05,  2.07it/s]
 44%|███████████████████████████████████████████▋                                                        | 298/682 [02:41<03:25,  1.87it/s]
 44%|███████████████████████████████████████████▊                                                        | 299/682 [02:41<03:20,  1.91it/s]
 44%|███████████████████████████████████████████▉                                                        | 300/682 [02:42<03:21,  1.90it/s]
 44%|████████████████████████████████████████████▏                                                       | 301/682 [02:42<03:21,  1.89it/s]
 44%|████████████████████████████████████████████▎                                                       | 302/682 [02:43<03:14,  1.96it/s]
 44%|████████████████████████████████████████████▍                                                       | 303/682 [02:43<03:10,  1.99it/s]
 45%|████████████████████████████████████████████▌                                                       | 304/682 [02:44<03:05,  2.04it/s]
 45%|████████████████████████████████████████████▋                                                       | 305/682 [02:44<03:03,  2.05it/s]
 45%|████████████████████████████████████████████▊                                                       | 306/682 [02:45<03:06,  2.01it/s]
 45%|█████████████████████████████████████████████                                                       | 307/682 [02:45<03:03,  2.05it/s]
 45%|█████████████████████████████████████████████▏                                                      | 308/682 [02:46<03:05,  2.02it/s]
 45%|█████████████████████████████████████████████▎                                                      | 309/682 [02:46<03:26,  1.80it/s]
 45%|█████████████████████████████████████████████▍                                                      | 310/682 [02:47<03:17,  1.88it/s]
 46%|█████████████████████████████████████████████▌                                                      | 311/682 [02:47<03:16,  1.89it/s]
 46%|█████████████████████████████████████████████▋                                                      | 312/682 [02:48<03:06,  1.99it/s]
 46%|█████████████████████████████████████████████▉                                                      | 313/682 [02:48<03:00,  2.04it/s]
 46%|██████████████████████████████████████████████                                                      | 314/682 [02:49<03:07,  1.96it/s]
 46%|██████████████████████████████████████████████▏                                                     | 315/682 [02:49<03:07,  1.95it/s]
 46%|██████████████████████████████████████████████▎                                                     | 316/682 [02:50<03:04,  1.98it/s]
 46%|██████████████████████████████████████████████▍                                                     | 317/682 [02:50<03:01,  2.01it/s]
 47%|██████████████████████████████████████████████▋                                                     | 318/682 [02:51<03:03,  1.99it/s]
 47%|██████████████████████████████████████████████▊                                                     | 319/682 [02:51<03:09,  1.91it/s]
 47%|██████████████████████████████████████████████▉                                                     | 320/682 [02:52<03:43,  1.62it/s]
 47%|███████████████████████████████████████████████                                                     | 321/682 [02:53<03:51,  1.56it/s]
 47%|███████████████████████████████████████████████▏                                                    | 322/682 [02:53<03:35,  1.67it/s]
 47%|███████████████████████████████████████████████▎                                                    | 323/682 [02:54<03:21,  1.78it/s]
 48%|███████████████████████████████████████████████▌                                                    | 324/682 [02:54<03:15,  1.83it/s]
 48%|███████████████████████████████████████████████▋                                                    | 325/682 [02:55<03:08,  1.89it/s]
 48%|███████████████████████████████████████████████▊                                                    | 326/682 [02:55<03:02,  1.95it/s]
 48%|███████████████████████████████████████████████▉                                                    | 327/682 [02:56<02:58,  1.99it/s]
 48%|████████████████████████████████████████████████                                                    | 328/682 [02:56<02:59,  1.97it/s]
 48%|████████████████████████████████████████████████▏                                                   | 329/682 [02:57<02:55,  2.01it/s]
 48%|████████████████████████████████████████████████▍                                                   | 330/682 [02:57<02:53,  2.03it/s]
 49%|████████████████████████████████████████████████▌                                                   | 331/682 [02:58<03:09,  1.85it/s]
 49%|████████████████████████████████████████████████▋                                                   | 332/682 [02:58<03:04,  1.90it/s]
 49%|████████████████████████████████████████████████▊                                                   | 333/682 [02:59<02:57,  1.97it/s]
 49%|████████████████████████████████████████████████▉                                                   | 334/682 [02:59<02:51,  2.03it/s]
 49%|█████████████████████████████████████████████████                                                   | 335/682 [03:00<02:48,  2.06it/s]
 49%|█████████████████████████████████████████████████▎                                                  | 336/682 [03:00<02:51,  2.02it/s]
 49%|█████████████████████████████████████████████████▍                                                  | 337/682 [03:01<02:53,  1.99it/s]
 50%|█████████████████████████████████████████████████▌                                                  | 338/682 [03:01<02:54,  1.97it/s]
 50%|█████████████████████████████████████████████████▋                                                  | 339/682 [03:02<02:48,  2.04it/s]
 50%|█████████████████████████████████████████████████▊                                                  | 340/682 [03:02<02:45,  2.06it/s]
 50%|██████████████████████████████████████████████████                                                  | 341/682 [03:03<02:55,  1.95it/s]
 50%|██████████████████████████████████████████████████▏                                                 | 342/682 [03:04<03:22,  1.68it/s]
 50%|██████████████████████████████████████████████████▎                                                 | 343/682 [03:04<03:13,  1.75it/s]
 50%|██████████████████████████████████████████████████▍                                                 | 344/682 [03:05<03:02,  1.85it/s]
 51%|██████████████████████████████████████████████████▌                                                 | 345/682 [03:05<02:58,  1.89it/s]
 51%|██████████████████████████████████████████████████▋                                                 | 346/682 [03:06<02:53,  1.94it/s]
 51%|██████████████████████████████████████████████████▉                                                 | 347/682 [03:06<02:58,  1.87it/s]
 51%|███████████████████████████████████████████████████                                                 | 348/682 [03:07<03:04,  1.81it/s]
 51%|███████████████████████████████████████████████████▏                                                | 349/682 [03:07<02:55,  1.90it/s]
 51%|███████████████████████████████████████████████████▎                                                | 350/682 [03:08<02:48,  1.97it/s]
 51%|███████████████████████████████████████████████████▍                                                | 351/682 [03:08<02:44,  2.01it/s]
 52%|███████████████████████████████████████████████████▌                                                | 352/682 [03:09<02:41,  2.05it/s]
 52%|███████████████████████████████████████████████████▊                                                | 353/682 [03:09<02:57,  1.85it/s]
 52%|███████████████████████████████████████████████████▉                                                | 354/682 [03:10<02:49,  1.94it/s]
 52%|████████████████████████████████████████████████████                                                | 355/682 [03:10<02:43,  2.00it/s]
 52%|████████████████████████████████████████████████████▏                                               | 356/682 [03:11<02:40,  2.03it/s]
 52%|████████████████████████████████████████████████████▎                                               | 357/682 [03:11<02:37,  2.06it/s]
 52%|████████████████████████████████████████████████████▍                                               | 358/682 [03:12<02:36,  2.08it/s]
 53%|████████████████████████████████████████████████████▋                                               | 359/682 [03:12<02:35,  2.07it/s]
 53%|████████████████████████████████████████████████████▊                                               | 360/682 [03:13<02:34,  2.08it/s]
 53%|████████████████████████████████████████████████████▉                                               | 361/682 [03:13<02:31,  2.12it/s]
 53%|█████████████████████████████████████████████████████                                               | 362/682 [03:14<02:30,  2.13it/s]
 53%|█████████████████████████████████████████████████████▏                                              | 363/682 [03:14<02:28,  2.15it/s]
 53%|█████████████████████████████████████████████████████▎                                              | 364/682 [03:15<02:50,  1.86it/s]
 54%|█████████████████████████████████████████████████████▌                                              | 365/682 [03:15<02:45,  1.92it/s]
 54%|█████████████████████████████████████████████████████▋                                              | 366/682 [03:16<02:40,  1.97it/s]
 54%|█████████████████████████████████████████████████████▊                                              | 367/682 [03:16<02:37,  1.99it/s]
 54%|█████████████████████████████████████████████████████▉                                              | 368/682 [03:17<02:38,  1.98it/s]
 54%|██████████████████████████████████████████████████████                                              | 369/682 [03:17<02:35,  2.01it/s]
 54%|██████████████████████████████████████████████████████▎                                             | 370/682 [03:18<02:31,  2.06it/s]
 54%|██████████████████████████████████████████████████████▍                                             | 371/682 [03:18<02:36,  1.99it/s]
 55%|██████████████████████████████████████████████████████▌                                             | 372/682 [03:19<02:49,  1.83it/s]
 55%|██████████████████████████████████████████████████████▋                                             | 373/682 [03:19<02:49,  1.82it/s]
 55%|██████████████████████████████████████████████████████▊                                             | 374/682 [03:20<02:43,  1.88it/s]
 55%|██████████████████████████████████████████████████████▉                                             | 375/682 [03:21<03:00,  1.70it/s]
 55%|███████████████████████████████████████████████████████▏                                            | 376/682 [03:21<02:51,  1.78it/s]
 55%|███████████████████████████████████████████████████████▎                                            | 377/682 [03:22<02:47,  1.82it/s]
 55%|███████████████████████████████████████████████████████▍                                            | 378/682 [03:22<02:42,  1.87it/s]
 56%|███████████████████████████████████████████████████████▌                                            | 379/682 [03:23<02:41,  1.88it/s]
 56%|███████████████████████████████████████████████████████▋                                            | 380/682 [03:23<02:39,  1.89it/s]
 56%|███████████████████████████████████████████████████████▊                                            | 381/682 [03:24<02:42,  1.85it/s]
 56%|████████████████████████████████████████████████████████                                            | 382/682 [03:24<02:54,  1.72it/s]
 56%|████████████████████████████████████████████████████████▏                                           | 383/682 [03:25<02:56,  1.69it/s]
 56%|████████████████████████████████████████████████████████▎                                           | 384/682 [03:26<03:00,  1.65it/s]
 56%|████████████████████████████████████████████████████████▍                                           | 385/682 [03:26<03:00,  1.65it/s]
 57%|████████████████████████████████████████████████████████▌                                           | 386/682 [03:27<03:12,  1.54it/s]
 57%|████████████████████████████████████████████████████████▋                                           | 387/682 [03:28<03:03,  1.61it/s]
 57%|████████████████████████████████████████████████████████▉                                           | 388/682 [03:28<02:52,  1.70it/s]
 57%|█████████████████████████████████████████████████████████                                           | 389/682 [03:29<02:46,  1.75it/s]
 57%|█████████████████████████████████████████████████████████▏                                          | 390/682 [03:29<02:51,  1.70it/s]
 57%|█████████████████████████████████████████████████████████▎                                          | 391/682 [03:30<02:41,  1.80it/s]
 57%|█████████████████████████████████████████████████████████▍                                          | 392/682 [03:30<02:32,  1.91it/s]
 58%|█████████████████████████████████████████████████████████▌                                          | 393/682 [03:31<02:26,  1.97it/s]
 58%|█████████████████████████████████████████████████████████▊                                          | 394/682 [03:31<02:21,  2.04it/s]
 58%|█████████████████████████████████████████████████████████▉                                          | 395/682 [03:32<02:24,  1.99it/s]
 58%|██████████████████████████████████████████████████████████                                          | 396/682 [03:32<02:21,  2.02it/s]
 58%|██████████████████████████████████████████████████████████▏                                         | 397/682 [03:33<02:39,  1.78it/s]
 58%|██████████████████████████████████████████████████████████▎                                         | 398/682 [03:33<02:35,  1.83it/s]
 59%|██████████████████████████████████████████████████████████▌                                         | 399/682 [03:34<02:28,  1.91it/s]
 59%|██████████████████████████████████████████████████████████▋                                         | 400/682 [03:34<02:22,  1.97it/s]
 59%|██████████████████████████████████████████████████████████▊                                         | 401/682 [03:35<02:18,  2.03it/s]
 59%|██████████████████████████████████████████████████████████▉                                         | 402/682 [03:35<02:17,  2.04it/s]
 59%|███████████████████████████████████████████████████████████                                         | 403/682 [03:36<02:15,  2.06it/s]
 59%|███████████████████████████████████████████████████████████▏                                        | 404/682 [03:36<02:12,  2.10it/s]
 59%|███████████████████████████████████████████████████████████▍                                        | 405/682 [03:37<02:12,  2.10it/s]
 60%|███████████████████████████████████████████████████████████▌                                        | 406/682 [03:37<02:10,  2.12it/s]
 60%|███████████████████████████████████████████████████████████▋                                        | 407/682 [03:38<02:11,  2.08it/s]
 60%|███████████████████████████████████████████████████████████▊                                        | 408/682 [03:38<02:27,  1.86it/s]
 60%|███████████████████████████████████████████████████████████▉                                        | 409/682 [03:39<02:22,  1.91it/s]
 60%|████████████████████████████████████████████████████████████                                        | 410/682 [03:39<02:21,  1.92it/s]
 60%|████████████████████████████████████████████████████████████▎                                       | 411/682 [03:40<02:17,  1.97it/s]
 60%|████████████████████████████████████████████████████████████▍                                       | 412/682 [03:40<02:12,  2.03it/s]
 61%|████████████████████████████████████████████████████████████▌                                       | 413/682 [03:41<02:09,  2.07it/s]
 61%|████████████████████████████████████████████████████████████▋                                       | 414/682 [03:41<02:20,  1.90it/s]
 61%|████████████████████████████████████████████████████████████▊                                       | 415/682 [03:42<02:24,  1.85it/s]
 61%|████████████████████████████████████████████████████████████▉                                       | 416/682 [03:42<02:23,  1.86it/s]
 61%|█████████████████████████████████████████████████████████████▏                                      | 417/682 [03:43<02:16,  1.94it/s]
 61%|█████████████████████████████████████████████████████████████▎                                      | 418/682 [03:43<02:13,  1.98it/s]
 61%|█████████████████████████████████████████████████████████████▍                                      | 419/682 [03:44<02:24,  1.82it/s]
 62%|█████████████████████████████████████████████████████████████▌                                      | 420/682 [03:44<02:23,  1.83it/s]
 62%|█████████████████████████████████████████████████████████████▋                                      | 421/682 [03:45<02:17,  1.90it/s]
 62%|█████████████████████████████████████████████████████████████▉                                      | 422/682 [03:45<02:12,  1.96it/s]
 62%|██████████████████████████████████████████████████████████████                                      | 423/682 [03:46<02:10,  1.99it/s]
 62%|██████████████████████████████████████████████████████████████▏                                     | 424/682 [03:46<02:09,  2.00it/s]
 62%|██████████████████████████████████████████████████████████████▎                                     | 425/682 [03:47<02:06,  2.04it/s]
 62%|██████████████████████████████████████████████████████████████▍                                     | 426/682 [03:47<02:04,  2.05it/s]
 63%|██████████████████████████████████████████████████████████████▌                                     | 427/682 [03:48<02:03,  2.07it/s]
 63%|██████████████████████████████████████████████████████████████▊                                     | 428/682 [03:48<02:02,  2.08it/s]
 63%|██████████████████████████████████████████████████████████████▉                                     | 429/682 [03:49<02:02,  2.06it/s]
 63%|███████████████████████████████████████████████████████████████                                     | 430/682 [03:49<02:15,  1.86it/s]
 63%|███████████████████████████████████████████████████████████████▏                                    | 431/682 [03:50<02:09,  1.94it/s]
 63%|███████████████████████████████████████████████████████████████▎                                    | 432/682 [03:50<02:07,  1.96it/s]
 63%|███████████████████████████████████████████████████████████████▍                                    | 433/682 [03:51<02:05,  1.98it/s]
 64%|███████████████████████████████████████████████████████████████▋                                    | 434/682 [03:51<02:02,  2.02it/s]
 64%|███████████████████████████████████████████████████████████████▊                                    | 435/682 [03:52<01:59,  2.07it/s]
 64%|███████████████████████████████████████████████████████████████▉                                    | 436/682 [03:52<01:57,  2.09it/s]
 64%|████████████████████████████████████████████████████████████████                                    | 437/682 [03:53<01:55,  2.12it/s]
 64%|████████████████████████████████████████████████████████████████▏                                   | 438/682 [03:53<01:54,  2.13it/s]
 64%|████████████████████████████████████████████████████████████████▎                                   | 439/682 [03:54<01:53,  2.13it/s]
 65%|████████████████████████████████████████████████████████████████▌                                   | 440/682 [03:54<01:53,  2.13it/s]
 65%|████████████████████████████████████████████████████████████████▋                                   | 441/682 [03:55<02:06,  1.90it/s]
 65%|████████████████████████████████████████████████████████████████▊                                   | 442/682 [03:55<02:01,  1.97it/s]
 65%|████████████████████████████████████████████████████████████████▉                                   | 443/682 [03:56<01:58,  2.01it/s]
 65%|█████████████████████████████████████████████████████████████████                                   | 444/682 [03:56<01:58,  2.02it/s]
 65%|█████████████████████████████████████████████████████████████████▏                                  | 445/682 [03:57<01:55,  2.06it/s]
 65%|█████████████████████████████████████████████████████████████████▍                                  | 446/682 [03:57<01:53,  2.08it/s]
 66%|█████████████████████████████████████████████████████████████████▌                                  | 447/682 [03:58<01:53,  2.08it/s]
 66%|█████████████████████████████████████████████████████████████████▋                                  | 448/682 [03:58<01:50,  2.11it/s]
 66%|█████████████████████████████████████████████████████████████████▊                                  | 449/682 [03:59<01:51,  2.08it/s]
 66%|█████████████████████████████████████████████████████████████████▉                                  | 450/682 [03:59<01:50,  2.10it/s]
 66%|██████████████████████████████████████████████████████████████████▏                                 | 451/682 [04:00<01:52,  2.06it/s]
 66%|██████████████████████████████████████████████████████████████████▎                                 | 452/682 [04:00<02:02,  1.88it/s]
 66%|██████████████████████████████████████████████████████████████████▍                                 | 453/682 [04:01<01:57,  1.94it/s]
 67%|██████████████████████████████████████████████████████████████████▌                                 | 454/682 [04:01<02:01,  1.88it/s]
 67%|██████████████████████████████████████████████████████████████████▋                                 | 455/682 [04:02<02:02,  1.85it/s]
 67%|██████████████████████████████████████████████████████████████████▊                                 | 456/682 [04:02<02:01,  1.86it/s]
 67%|███████████████████████████████████████████████████████████████████                                 | 457/682 [04:03<01:55,  1.94it/s]
 67%|███████████████████████████████████████████████████████████████████▏                                | 458/682 [04:03<01:53,  1.97it/s]
 67%|███████████████████████████████████████████████████████████████████▎                                | 459/682 [04:04<01:49,  2.03it/s]
 67%|███████████████████████████████████████████████████████████████████▍                                | 460/682 [04:04<01:48,  2.04it/s]
 68%|███████████████████████████████████████████████████████████████████▌                                | 461/682 [04:05<01:48,  2.03it/s]
 68%|███████████████████████████████████████████████████████████████████▋                                | 462/682 [04:05<01:48,  2.03it/s]
 68%|███████████████████████████████████████████████████████████████████▉                                | 463/682 [04:06<02:00,  1.81it/s]
 68%|████████████████████████████████████████████████████████████████████                                | 464/682 [04:06<01:57,  1.86it/s]
 68%|████████████████████████████████████████████████████████████████████▏                               | 465/682 [04:07<01:52,  1.93it/s]
 68%|████████████████████████████████████████████████████████████████████▎                               | 466/682 [04:07<01:48,  1.99it/s]
 68%|████████████████████████████████████████████████████████████████████▍                               | 467/682 [04:08<01:45,  2.04it/s]
 69%|████████████████████████████████████████████████████████████████████▌                               | 468/682 [04:08<01:42,  2.09it/s]
 69%|████████████████████████████████████████████████████████████████████▊                               | 469/682 [04:09<01:41,  2.10it/s]
 69%|████████████████████████████████████████████████████████████████████▉                               | 470/682 [04:09<01:39,  2.12it/s]
 69%|█████████████████████████████████████████████████████████████████████                               | 471/682 [04:10<01:38,  2.15it/s]
 69%|█████████████████████████████████████████████████████████████████████▏                              | 472/682 [04:10<01:37,  2.16it/s]
 69%|█████████████████████████████████████████████████████████████████████▎                              | 473/682 [04:11<01:38,  2.12it/s]
 70%|█████████████████████████████████████████████████████████████████████▌                              | 474/682 [04:11<01:49,  1.90it/s]
 70%|█████████████████████████████████████████████████████████████████████▋                              | 475/682 [04:12<01:44,  1.98it/s]
 70%|█████████████████████████████████████████████████████████████████████▊                              | 476/682 [04:12<01:41,  2.04it/s]
 70%|█████████████████████████████████████████████████████████████████████▉                              | 477/682 [04:13<01:39,  2.06it/s]
 70%|██████████████████████████████████████████████████████████████████████                              | 478/682 [04:13<01:36,  2.11it/s]
 70%|██████████████████████████████████████████████████████████████████████▏                             | 479/682 [04:14<01:36,  2.11it/s]
 70%|██████████████████████████████████████████████████████████████████████▍                             | 480/682 [04:14<01:34,  2.13it/s]
 71%|██████████████████████████████████████████████████████████████████████▌                             | 481/682 [04:15<01:34,  2.12it/s]
 71%|██████████████████████████████████████████████████████████████████████▋                             | 482/682 [04:15<01:33,  2.13it/s]
 71%|██████████████████████████████████████████████████████████████████████▊                             | 483/682 [04:16<01:38,  2.01it/s]
 71%|██████████████████████████████████████████████████████████████████████▉                             | 484/682 [04:16<01:47,  1.84it/s]
 71%|███████████████████████████████████████████████████████████████████████                             | 485/682 [04:17<02:03,  1.60it/s]
 71%|███████████████████████████████████████████████████████████████████████▎                            | 486/682 [04:18<01:55,  1.70it/s]
 71%|███████████████████████████████████████████████████████████████████████▍                            | 487/682 [04:18<01:46,  1.83it/s]
 72%|███████████████████████████████████████████████████████████████████████▌                            | 488/682 [04:18<01:40,  1.93it/s]
 72%|███████████████████████████████████████████████████████████████████████▋                            | 489/682 [04:19<01:44,  1.84it/s]
 72%|███████████████████████████████████████████████████████████████████████▊                            | 490/682 [04:20<01:45,  1.81it/s]
 72%|███████████████████████████████████████████████████████████████████████▉                            | 491/682 [04:20<01:44,  1.82it/s]
 72%|████████████████████████████████████████████████████████████████████████▏                           | 492/682 [04:21<01:40,  1.89it/s]
 72%|████████████████████████████████████████████████████████████████████████▎                           | 493/682 [04:21<01:36,  1.95it/s]
 72%|████████████████████████████████████████████████████████████████████████▍                           | 494/682 [04:22<01:36,  1.95it/s]
 73%|████████████████████████████████████████████████████████████████████████▌                           | 495/682 [04:22<01:34,  1.98it/s]
 73%|████████████████████████████████████████████████████████████████████████▋                           | 496/682 [04:23<01:47,  1.73it/s]
 73%|████████████████████████████████████████████████████████████████████████▊                           | 497/682 [04:23<01:43,  1.78it/s]
 73%|█████████████████████████████████████████████████████████████████████████                           | 498/682 [04:24<01:45,  1.74it/s]
 73%|█████████████████████████████████████████████████████████████████████████▏                          | 499/682 [04:24<01:41,  1.81it/s]
 73%|█████████████████████████████████████████████████████████████████████████▎                          | 500/682 [04:25<01:43,  1.76it/s]
 73%|█████████████████████████████████████████████████████████████████████████▍                          | 501/682 [04:26<01:40,  1.79it/s]
 74%|█████████████████████████████████████████████████████████████████████████▌                          | 502/682 [04:26<01:38,  1.83it/s]
 74%|█████████████████████████████████████████████████████████████████████████▊                          | 503/682 [04:27<01:37,  1.84it/s]
 74%|█████████████████████████████████████████████████████████████████████████▉                          | 504/682 [04:27<01:35,  1.86it/s]
 74%|██████████████████████████████████████████████████████████████████████████                          | 505/682 [04:28<01:36,  1.83it/s]
 74%|██████████████████████████████████████████████████████████████████████████▏                         | 506/682 [04:28<01:31,  1.92it/s]
 74%|██████████████████████████████████████████████████████████████████████████▎                         | 507/682 [04:29<01:36,  1.81it/s]
 74%|██████████████████████████████████████████████████████████████████████████▍                         | 508/682 [04:29<01:31,  1.90it/s]
 75%|██████████████████████████████████████████████████████████████████████████▋                         | 509/682 [04:30<01:27,  1.98it/s]
 75%|██████████████████████████████████████████████████████████████████████████▊                         | 510/682 [04:30<01:25,  2.01it/s]
 75%|██████████████████████████████████████████████████████████████████████████▉                         | 511/682 [04:31<01:23,  2.06it/s]
 75%|███████████████████████████████████████████████████████████████████████████                         | 512/682 [04:31<01:22,  2.07it/s]
 75%|███████████████████████████████████████████████████████████████████████████▏                        | 513/682 [04:32<01:20,  2.11it/s]
 75%|███████████████████████████████████████████████████████████████████████████▎                        | 514/682 [04:32<01:18,  2.14it/s]
 76%|███████████████████████████████████████████████████████████████████████████▌                        | 515/682 [04:33<01:19,  2.10it/s]
 76%|███████████████████████████████████████████████████████████████████████████▋                        | 516/682 [04:33<01:18,  2.11it/s]
 76%|███████████████████████████████████████████████████████████████████████████▊                        | 517/682 [04:34<01:17,  2.12it/s]
 76%|███████████████████████████████████████████████████████████████████████████▉                        | 518/682 [04:34<01:31,  1.80it/s]
 76%|████████████████████████████████████████████████████████████████████████████                        | 519/682 [04:35<01:35,  1.71it/s]
 76%|████████████████████████████████████████████████████████████████████████████▏                       | 520/682 [04:35<01:34,  1.72it/s]
 76%|████████████████████████████████████████████████████████████████████████████▍                       | 521/682 [04:36<01:28,  1.83it/s]
 77%|████████████████████████████████████████████████████████████████████████████▌                       | 522/682 [04:36<01:23,  1.91it/s]
 77%|████████████████████████████████████████████████████████████████████████████▋                       | 523/682 [04:37<01:20,  1.97it/s]
 77%|████████████████████████████████████████████████████████████████████████████▊                       | 524/682 [04:37<01:21,  1.95it/s]
 77%|████████████████████████████████████████████████████████████████████████████▉                       | 525/682 [04:38<01:18,  2.01it/s]
 77%|█████████████████████████████████████████████████████████████████████████████▏                      | 526/682 [04:38<01:16,  2.03it/s]
 77%|█████████████████████████████████████████████████████████████████████████████▎                      | 527/682 [04:39<01:16,  2.02it/s]
 77%|█████████████████████████████████████████████████████████████████████████████▍                      | 528/682 [04:39<01:19,  1.95it/s]
 78%|█████████████████████████████████████████████████████████████████████████████▌                      | 529/682 [04:40<01:24,  1.80it/s]
 78%|█████████████████████████████████████████████████████████████████████████████▋                      | 530/682 [04:41<01:22,  1.85it/s]
 78%|█████████████████████████████████████████████████████████████████████████████▊                      | 531/682 [04:41<01:17,  1.94it/s]
 78%|██████████████████████████████████████████████████████████████████████████████                      | 532/682 [04:42<01:16,  1.95it/s]
 78%|██████████████████████████████████████████████████████████████████████████████▏                     | 533/682 [04:42<01:14,  2.01it/s]
 78%|██████████████████████████████████████████████████████████████████████████████▎                     | 534/682 [04:43<01:13,  2.02it/s]
 78%|██████████████████████████████████████████████████████████████████████████████▍                     | 535/682 [04:43<01:11,  2.05it/s]
 79%|██████████████████████████████████████████████████████████████████████████████▌                     | 536/682 [04:43<01:11,  2.04it/s]
 79%|██████████████████████████████████████████████████████████████████████████████▋                     | 537/682 [04:44<01:09,  2.10it/s]
 79%|██████████████████████████████████████████████████████████████████████████████▉                     | 538/682 [04:44<01:08,  2.11it/s]
 79%|███████████████████████████████████████████████████████████████████████████████                     | 539/682 [04:45<01:07,  2.12it/s]
 79%|███████████████████████████████████████████████████████████████████████████████▏                    | 540/682 [04:45<01:14,  1.91it/s]
 79%|███████████████████████████████████████████████████████████████████████████████▎                    | 541/682 [04:46<01:11,  1.98it/s]
 79%|███████████████████████████████████████████████████████████████████████████████▍                    | 542/682 [04:46<01:09,  2.03it/s]
 80%|███████████████████████████████████████████████████████████████████████████████▌                    | 543/682 [04:47<01:07,  2.05it/s]
 80%|███████████████████████████████████████████████████████████████████████████████▊                    | 544/682 [04:47<01:06,  2.08it/s]
 80%|███████████████████████████████████████████████████████████████████████████████▉                    | 545/682 [04:48<01:05,  2.10it/s]
 80%|████████████████████████████████████████████████████████████████████████████████                    | 546/682 [04:48<01:04,  2.10it/s]
 80%|████████████████████████████████████████████████████████████████████████████████▏                   | 547/682 [04:49<01:03,  2.11it/s]
 80%|████████████████████████████████████████████████████████████████████████████████▎                   | 548/682 [04:49<01:04,  2.09it/s]
 80%|████████████████████████████████████████████████████████████████████████████████▍                   | 549/682 [04:50<01:03,  2.10it/s]
 81%|████████████████████████████████████████████████████████████████████████████████▋                   | 550/682 [04:50<01:02,  2.10it/s]
 81%|████████████████████████████████████████████████████████████████████████████████▊                   | 551/682 [04:51<01:09,  1.90it/s]
 81%|████████████████████████████████████████████████████████████████████████████████▉                   | 552/682 [04:51<01:06,  1.96it/s]
 81%|█████████████████████████████████████████████████████████████████████████████████                   | 553/682 [04:52<01:03,  2.02it/s]
 81%|█████████████████████████████████████████████████████████████████████████████████▏                  | 554/682 [04:52<01:04,  2.00it/s]
 81%|█████████████████████████████████████████████████████████████████████████████████▍                  | 555/682 [04:53<01:04,  1.96it/s]
 82%|█████████████████████████████████████████████████████████████████████████████████▌                  | 556/682 [04:53<01:02,  2.00it/s]
 82%|█████████████████████████████████████████████████████████████████████████████████▋                  | 557/682 [04:54<01:00,  2.05it/s]
 82%|█████████████████████████████████████████████████████████████████████████████████▊                  | 558/682 [04:54<00:59,  2.07it/s]
 82%|█████████████████████████████████████████████████████████████████████████████████▉                  | 559/682 [04:55<00:58,  2.08it/s]
 82%|██████████████████████████████████████████████████████████████████████████████████                  | 560/682 [04:55<00:58,  2.09it/s]
 82%|██████████████████████████████████████████████████████████████████████████████████▎                 | 561/682 [04:56<00:57,  2.09it/s]
 82%|██████████████████████████████████████████████████████████████████████████████████▍                 | 562/682 [04:56<01:04,  1.87it/s]
 83%|██████████████████████████████████████████████████████████████████████████████████▌                 | 563/682 [04:57<01:01,  1.94it/s]
 83%|██████████████████████████████████████████████████████████████████████████████████▋                 | 564/682 [04:57<00:59,  1.98it/s]
 83%|██████████████████████████████████████████████████████████████████████████████████▊                 | 565/682 [04:58<00:58,  2.00it/s]
 83%|██████████████████████████████████████████████████████████████████████████████████▉                 | 566/682 [04:58<00:57,  2.03it/s]
 83%|███████████████████████████████████████████████████████████████████████████████████▏                | 567/682 [04:59<00:56,  2.02it/s]
 83%|███████████████████████████████████████████████████████████████████████████████████▎                | 568/682 [04:59<00:56,  2.01it/s]
 83%|███████████████████████████████████████████████████████████████████████████████████▍                | 569/682 [05:00<00:54,  2.08it/s]
 84%|███████████████████████████████████████████████████████████████████████████████████▌                | 570/682 [05:00<00:53,  2.09it/s]
 84%|███████████████████████████████████████████████████████████████████████████████████▋                | 571/682 [05:01<00:53,  2.09it/s]
 84%|███████████████████████████████████████████████████████████████████████████████████▊                | 572/682 [05:01<00:52,  2.08it/s]
 84%|████████████████████████████████████████████████████████████████████████████████████                | 573/682 [05:02<00:57,  1.88it/s]
 84%|████████████████████████████████████████████████████████████████████████████████████▏               | 574/682 [05:02<00:55,  1.93it/s]
 84%|████████████████████████████████████████████████████████████████████████████████████▎               | 575/682 [05:03<00:54,  1.95it/s]
 84%|████████████████████████████████████████████████████████████████████████████████████▍               | 576/682 [05:03<00:52,  2.01it/s]
 85%|████████████████████████████████████████████████████████████████████████████████████▌               | 577/682 [05:04<00:50,  2.06it/s]
 85%|████████████████████████████████████████████████████████████████████████████████████▊               | 578/682 [05:04<00:49,  2.08it/s]
 85%|████████████████████████████████████████████████████████████████████████████████████▉               | 579/682 [05:05<00:52,  1.97it/s]
 85%|█████████████████████████████████████████████████████████████████████████████████████               | 580/682 [05:05<00:54,  1.88it/s]
 85%|█████████████████████████████████████████████████████████████████████████████████████▏              | 581/682 [05:06<00:53,  1.90it/s]
 85%|█████████████████████████████████████████████████████████████████████████████████████▎              | 582/682 [05:06<00:50,  1.96it/s]
 85%|█████████████████████████████████████████████████████████████████████████████████████▍              | 583/682 [05:07<00:49,  2.01it/s]
 86%|█████████████████████████████████████████████████████████████████████████████████████▋              | 584/682 [05:07<00:53,  1.82it/s]
 86%|█████████████████████████████████████████████████████████████████████████████████████▊              | 585/682 [05:08<00:53,  1.82it/s]
 86%|█████████████████████████████████████████████████████████████████████████████████████▉              | 586/682 [05:08<00:50,  1.91it/s]
 86%|██████████████████████████████████████████████████████████████████████████████████████              | 587/682 [05:09<00:51,  1.86it/s]
 86%|██████████████████████████████████████████████████████████████████████████████████████▏             | 588/682 [05:10<00:51,  1.83it/s]
 86%|██████████████████████████████████████████████████████████████████████████████████████▎             | 589/682 [05:10<00:48,  1.91it/s]
 87%|██████████████████████████████████████████████████████████████████████████████████████▌             | 590/682 [05:11<00:47,  1.94it/s]
 87%|██████████████████████████████████████████████████████████████████████████████████████▋             | 591/682 [05:11<00:45,  2.00it/s]
 87%|██████████████████████████████████████████████████████████████████████████████████████▊             | 592/682 [05:11<00:44,  2.03it/s]
 87%|██████████████████████████████████████████████████████████████████████████████████████▉             | 593/682 [05:12<00:43,  2.05it/s]
 87%|███████████████████████████████████████████████████████████████████████████████████████             | 594/682 [05:12<00:42,  2.08it/s]
 87%|███████████████████████████████████████████████████████████████████████████████████████▏            | 595/682 [05:13<00:46,  1.89it/s]
 87%|███████████████████████████████████████████████████████████████████████████████████████▍            | 596/682 [05:14<00:44,  1.95it/s]
 88%|███████████████████████████████████████████████████████████████████████████████████████▌            | 597/682 [05:14<00:43,  1.97it/s]
 88%|███████████████████████████████████████████████████████████████████████████████████████▋            | 598/682 [05:15<00:42,  2.00it/s]
 88%|███████████████████████████████████████████████████████████████████████████████████████▊            | 599/682 [05:15<00:40,  2.04it/s]
 88%|███████████████████████████████████████████████████████████████████████████████████████▉            | 600/682 [05:15<00:40,  2.05it/s]
 88%|████████████████████████████████████████████████████████████████████████████████████████            | 601/682 [05:16<00:38,  2.08it/s]
 88%|████████████████████████████████████████████████████████████████████████████████████████▎           | 602/682 [05:16<00:38,  2.10it/s]
 88%|████████████████████████████████████████████████████████████████████████████████████████▍           | 603/682 [05:17<00:37,  2.08it/s]
 89%|████████████████████████████████████████████████████████████████████████████████████████▌           | 604/682 [05:17<00:37,  2.10it/s]
 89%|████████████████████████████████████████████████████████████████████████████████████████▋           | 605/682 [05:18<00:36,  2.12it/s]
 89%|████████████████████████████████████████████████████████████████████████████████████████▊           | 606/682 [05:18<00:39,  1.92it/s]
 89%|█████████████████████████████████████████████████████████████████████████████████████████           | 607/682 [05:19<00:38,  1.96it/s]
 89%|█████████████████████████████████████████████████████████████████████████████████████████▏          | 608/682 [05:19<00:36,  2.02it/s]
 89%|█████████████████████████████████████████████████████████████████████████████████████████▎          | 609/682 [05:20<00:35,  2.04it/s]
 89%|█████████████████████████████████████████████████████████████████████████████████████████▍          | 610/682 [05:20<00:37,  1.94it/s]
 90%|█████████████████████████████████████████████████████████████████████████████████████████▌          | 611/682 [05:21<00:38,  1.86it/s]
 90%|█████████████████████████████████████████████████████████████████████████████████████████▋          | 612/682 [05:22<00:36,  1.92it/s]
 90%|█████████████████████████████████████████████████████████████████████████████████████████▉          | 613/682 [05:22<00:34,  2.00it/s]
 90%|██████████████████████████████████████████████████████████████████████████████████████████          | 614/682 [05:22<00:33,  2.04it/s]
 90%|██████████████████████████████████████████████████████████████████████████████████████████▏         | 615/682 [05:23<00:32,  2.06it/s]
 90%|██████████████████████████████████████████████████████████████████████████████████████████▎         | 616/682 [05:23<00:31,  2.09it/s]
 90%|██████████████████████████████████████████████████████████████████████████████████████████▍         | 617/682 [05:24<00:34,  1.90it/s]
 91%|██████████████████████████████████████████████████████████████████████████████████████████▌         | 618/682 [05:24<00:32,  1.96it/s]
 91%|██████████████████████████████████████████████████████████████████████████████████████████▊         | 619/682 [05:25<00:31,  1.98it/s]
 91%|██████████████████████████████████████████████████████████████████████████████████████████▉         | 620/682 [05:25<00:30,  2.02it/s]
 91%|███████████████████████████████████████████████████████████████████████████████████████████         | 621/682 [05:26<00:30,  1.98it/s]
 91%|███████████████████████████████████████████████████████████████████████████████████████████▏        | 622/682 [05:26<00:29,  2.02it/s]
 91%|███████████████████████████████████████████████████████████████████████████████████████████▎        | 623/682 [05:27<00:29,  2.03it/s]
 91%|███████████████████████████████████████████████████████████████████████████████████████████▍        | 624/682 [05:27<00:28,  2.06it/s]
 92%|███████████████████████████████████████████████████████████████████████████████████████████▋        | 625/682 [05:28<00:27,  2.06it/s]
 92%|███████████████████████████████████████████████████████████████████████████████████████████▊        | 626/682 [05:28<00:26,  2.09it/s]
 92%|███████████████████████████████████████████████████████████████████████████████████████████▉        | 627/682 [05:29<00:26,  2.10it/s]
 92%|████████████████████████████████████████████████████████████████████████████████████████████        | 628/682 [05:30<00:28,  1.86it/s]
 92%|████████████████████████████████████████████████████████████████████████████████████████████▏       | 629/682 [05:30<00:28,  1.87it/s]
 92%|████████████████████████████████████████████████████████████████████████████████████████████▍       | 630/682 [05:31<00:27,  1.91it/s]
 93%|████████████████████████████████████████████████████████████████████████████████████████████▌       | 631/682 [05:31<00:26,  1.91it/s]
 93%|████████████████████████████████████████████████████████████████████████████████████████████▋       | 632/682 [05:32<00:25,  1.96it/s]
 93%|████████████████████████████████████████████████████████████████████████████████████████████▊       | 633/682 [05:32<00:24,  1.98it/s]
 93%|████████████████████████████████████████████████████████████████████████████████████████████▉       | 634/682 [05:33<00:25,  1.88it/s]
 93%|█████████████████████████████████████████████████████████████████████████████████████████████       | 635/682 [05:33<00:25,  1.81it/s]
 93%|█████████████████████████████████████████████████████████████████████████████████████████████▎      | 636/682 [05:34<00:24,  1.85it/s]
 93%|█████████████████████████████████████████████████████████████████████████████████████████████▍      | 637/682 [05:34<00:23,  1.93it/s]
 94%|█████████████████████████████████████████████████████████████████████████████████████████████▌      | 638/682 [05:35<00:22,  1.98it/s]
 94%|█████████████████████████████████████████████████████████████████████████████████████████████▋      | 639/682 [05:35<00:23,  1.81it/s]
 94%|█████████████████████████████████████████████████████████████████████████████████████████████▊      | 640/682 [05:36<00:22,  1.86it/s]
 94%|█████████████████████████████████████████████████████████████████████████████████████████████▉      | 641/682 [05:36<00:21,  1.95it/s]
 94%|██████████████████████████████████████████████████████████████████████████████████████████████▏     | 642/682 [05:37<00:20,  1.97it/s]
 94%|██████████████████████████████████████████████████████████████████████████████████████████████▎     | 643/682 [05:37<00:19,  1.99it/s]
 94%|██████████████████████████████████████████████████████████████████████████████████████████████▍     | 644/682 [05:38<00:19,  1.98it/s]
 95%|██████████████████████████████████████████████████████████████████████████████████████████████▌     | 645/682 [05:38<00:18,  2.02it/s]
 95%|██████████████████████████████████████████████████████████████████████████████████████████████▋     | 646/682 [05:39<00:17,  2.07it/s]
 95%|██████████████████████████████████████████████████████████████████████████████████████████████▊     | 647/682 [05:39<00:16,  2.07it/s]
 95%|███████████████████████████████████████████████████████████████████████████████████████████████     | 648/682 [05:40<00:16,  2.10it/s]
 95%|███████████████████████████████████████████████████████████████████████████████████████████████▏    | 649/682 [05:40<00:15,  2.11it/s]
 95%|███████████████████████████████████████████████████████████████████████████████████████████████▎    | 650/682 [05:41<00:16,  1.91it/s]
 95%|███████████████████████████████████████████████████████████████████████████████████████████████▍    | 651/682 [05:41<00:15,  1.95it/s]
 96%|███████████████████████████████████████████████████████████████████████████████████████████████▌    | 652/682 [05:42<00:14,  2.01it/s]
 96%|███████████████████████████████████████████████████████████████████████████████████████████████▋    | 653/682 [05:42<00:14,  2.01it/s]
 96%|███████████████████████████████████████████████████████████████████████████████████████████████▉    | 654/682 [05:43<00:13,  2.06it/s]
 96%|████████████████████████████████████████████████████████████████████████████████████████████████    | 655/682 [05:43<00:13,  2.04it/s]
 96%|████████████████████████████████████████████████████████████████████████████████████████████████▏   | 656/682 [05:44<00:12,  2.06it/s]
 96%|████████████████████████████████████████████████████████████████████████████████████████████████▎   | 657/682 [05:44<00:12,  2.03it/s]
 96%|████████████████████████████████████████████████████████████████████████████████████████████████▍   | 658/682 [05:45<00:12,  1.97it/s]
 97%|████████████████████████████████████████████████████████████████████████████████████████████████▋   | 659/682 [05:45<00:11,  1.97it/s]
 97%|████████████████████████████████████████████████████████████████████████████████████████████████▊   | 660/682 [05:46<00:11,  1.99it/s]
 97%|████████████████████████████████████████████████████████████████████████████████████████████████▉   | 661/682 [05:46<00:12,  1.71it/s]
 97%|█████████████████████████████████████████████████████████████████████████████████████████████████   | 662/682 [05:47<00:11,  1.72it/s]
 97%|█████████████████████████████████████████████████████████████████████████████████████████████████▏  | 663/682 [05:48<00:10,  1.80it/s]
 97%|█████████████████████████████████████████████████████████████████████████████████████████████████▎  | 664/682 [05:48<00:09,  1.87it/s]
 98%|█████████████████████████████████████████████████████████████████████████████████████████████████▌  | 665/682 [05:49<00:09,  1.88it/s]
 98%|█████████████████████████████████████████████████████████████████████████████████████████████████▋  | 666/682 [05:49<00:08,  1.92it/s]
 98%|█████████████████████████████████████████████████████████████████████████████████████████████████▊  | 667/682 [05:50<00:07,  1.98it/s]
 98%|█████████████████████████████████████████████████████████████████████████████████████████████████▉  | 668/682 [05:50<00:06,  2.03it/s]
 98%|██████████████████████████████████████████████████████████████████████████████████████████████████  | 669/682 [05:50<00:06,  2.07it/s]
 98%|██████████████████████████████████████████████████████████████████████████████████████████████████▏ | 670/682 [05:51<00:05,  2.07it/s]
 98%|██████████████████████████████████████████████████████████████████████████████████████████████████▍ | 671/682 [05:51<00:05,  2.10it/s]
 99%|██████████████████████████████████████████████████████████████████████████████████████████████████▌ | 672/682 [05:52<00:05,  1.91it/s]
 99%|██████████████████████████████████████████████████████████████████████████████████████████████████▋ | 673/682 [05:53<00:04,  1.95it/s]
 99%|██████████████████████████████████████████████████████████████████████████████████████████████████▊ | 674/682 [05:53<00:04,  1.98it/s]
 99%|██████████████████████████████████████████████████████████████████████████████████████████████████▉ | 675/682 [05:53<00:03,  2.03it/s]
 99%|███████████████████████████████████████████████████████████████████████████████████████████████████ | 676/682 [05:54<00:03,  1.97it/s]
 99%|███████████████████████████████████████████████████████████████████████████████████████████████████▎| 677/682 [05:55<00:02,  1.87it/s]
 99%|███████████████████████████████████████████████████████████████████████████████████████████████████▍| 678/682 [05:55<00:02,  1.85it/s]
100%|███████████████████████████████████████████████████████████████████████████████████████████████████▌| 679/682 [05:56<00:01,  1.87it/s]
100%|███████████████████████████████████████████████████████████████████████████████████████████████████▋| 680/682 [05:56<00:01,  1.94it/s]
100%|███████████████████████████████████████████████████████████████████████████████████████████████████▊| 681/682 [05:57<00:00,  1.96it/s]
[MoviePy] Done.
[MoviePy] >>>> Video ready: yellow.mp4 

Wall time: 5min 58s
In [10]:
HTML("""
<video width="960" height="540" controls>
  <source src="{0}">
</video>
""".format(yellow_output))
Out[10]:

Reflections

Congratulations on finding the lane lines! As the final step in this project, we would like you to share your thoughts on your lane finding pipeline... specifically, how could you imagine making your algorithm better / more robust? Where will your current algorithm be likely to fail?

Please add your thoughts below, and if you're up for making your pipeline more robust, be sure to scroll down and check out the optional challenge video below!

The algorithm used here heavily depends on the fact that the road is dark and the lanes are bright. It also works well only if the car is cenetered between the lane lines. If the lane lines are curved, the algorithm would not work well. If the road is brighter (like cement road), the algorithm wouldn't work. If there were only bot dots and no lane markings, a human driver would extrapolate the bot dots into lane markings, but the algorithm implemented here would not be able to do that. There are several improvements that could be considered.

1. Use color thresholds for identifying lane markings.
2. Use moving average to predict lane line positions.

Submission

If you're satisfied with your video outputs it's time to submit! Submit this ipython notebook for review.

Optional Challenge

Try your lane finding pipeline on the video below. Does it still work? Can you figure out a way to make it more robust? If you're up for the challenge, modify your pipeline so it works with this video and submit it along with the rest of your project!

In [11]:
challenge_output = 'extra.mp4'
clip2 = VideoFileClip('challenge.mp4')
challenge_clip = clip2.fl_image(process_image)
%time challenge_clip.write_videofile(challenge_output, audio=False)
[MoviePy] >>>> Building video extra.mp4
[MoviePy] Writing video extra.mp4
  0%|                                                                                                              | 0/251 [00:00<?, ?it/s]
  0%|▍                                                                                                     | 1/251 [00:00<03:36,  1.16it/s]
  1%|▊                                                                                                     | 2/251 [00:01<03:24,  1.21it/s]
  1%|█▏                                                                                                    | 3/251 [00:02<03:26,  1.20it/s]
  2%|█▋                                                                                                    | 4/251 [00:03<03:12,  1.28it/s]
  2%|██                                                                                                    | 5/251 [00:03<03:07,  1.31it/s]
  2%|██▍                                                                                                   | 6/251 [00:04<03:05,  1.32it/s]
  3%|██▊                                                                                                   | 7/251 [00:05<03:01,  1.34it/s]
  3%|███▎                                                                                                  | 8/251 [00:05<02:57,  1.37it/s]
  4%|███▋                                                                                                  | 9/251 [00:06<03:17,  1.23it/s]
  4%|████                                                                                                 | 10/251 [00:08<03:36,  1.11it/s]
  4%|████▍                                                                                                | 11/251 [00:08<03:18,  1.21it/s]
  5%|████▊                                                                                                | 12/251 [00:09<03:21,  1.18it/s]
  5%|█████▏                                                                                               | 13/251 [00:10<03:07,  1.27it/s]
  6%|█████▋                                                                                               | 14/251 [00:10<02:55,  1.35it/s]
  6%|██████                                                                                               | 15/251 [00:11<03:15,  1.20it/s]
  6%|██████▍                                                                                              | 16/251 [00:12<03:01,  1.30it/s]
  7%|██████▊                                                                                              | 17/251 [00:13<02:49,  1.38it/s]
  7%|███████▏                                                                                             | 18/251 [00:13<02:43,  1.42it/s]
  8%|███████▋                                                                                             | 19/251 [00:14<02:46,  1.40it/s]
  8%|████████                                                                                             | 20/251 [00:15<02:41,  1.43it/s]
  8%|████████▍                                                                                            | 21/251 [00:15<02:35,  1.47it/s]
  9%|████████▊                                                                                            | 22/251 [00:16<02:47,  1.37it/s]
  9%|█████████▎                                                                                           | 23/251 [00:17<03:03,  1.24it/s]
 10%|█████████▋                                                                                           | 24/251 [00:18<02:48,  1.35it/s]
 10%|██████████                                                                                           | 25/251 [00:18<02:36,  1.44it/s]
 10%|██████████▍                                                                                          | 26/251 [00:19<02:32,  1.48it/s]
 11%|██████████▊                                                                                          | 27/251 [00:20<02:31,  1.48it/s]
 11%|███████████▎                                                                                         | 28/251 [00:20<02:27,  1.51it/s]
 12%|███████████▋                                                                                         | 29/251 [00:21<02:25,  1.53it/s]
 12%|████████████                                                                                         | 30/251 [00:22<02:27,  1.50it/s]
 12%|████████████▍                                                                                        | 31/251 [00:22<02:25,  1.51it/s]
 13%|████████████▉                                                                                        | 32/251 [00:23<02:48,  1.30it/s]
 13%|█████████████▎                                                                                       | 33/251 [00:24<03:01,  1.20it/s]
 14%|█████████████▋                                                                                       | 34/251 [00:25<03:08,  1.15it/s]
 14%|██████████████                                                                                       | 35/251 [00:26<02:55,  1.23it/s]
 14%|██████████████▍                                                                                      | 36/251 [00:27<02:45,  1.30it/s]
 15%|██████████████▉                                                                                      | 37/251 [00:27<02:33,  1.39it/s]
 15%|███████████████▎                                                                                     | 38/251 [00:28<02:30,  1.42it/s]
 16%|███████████████▋                                                                                     | 39/251 [00:29<02:23,  1.48it/s]
 16%|████████████████                                                                                     | 40/251 [00:29<02:19,  1.51it/s]
 16%|████████████████▍                                                                                    | 41/251 [00:30<02:15,  1.55it/s]
 17%|████████████████▉                                                                                    | 42/251 [00:30<02:12,  1.57it/s]
 17%|█████████████████▎                                                                                   | 43/251 [00:31<02:12,  1.58it/s]
 18%|█████████████████▋                                                                                   | 44/251 [00:32<02:09,  1.59it/s]
 18%|██████████████████                                                                                   | 45/251 [00:32<02:22,  1.45it/s]
 18%|██████████████████▌                                                                                  | 46/251 [00:33<02:22,  1.44it/s]
 19%|██████████████████▉                                                                                  | 47/251 [00:34<02:27,  1.38it/s]
 19%|███████████████████▎                                                                                 | 48/251 [00:35<02:29,  1.36it/s]
 20%|███████████████████▋                                                                                 | 49/251 [00:35<02:23,  1.41it/s]
 20%|████████████████████                                                                                 | 50/251 [00:36<02:18,  1.45it/s]
 20%|████████████████████▌                                                                                | 51/251 [00:37<02:15,  1.48it/s]
 21%|████████████████████▉                                                                                | 52/251 [00:37<02:11,  1.51it/s]
 21%|█████████████████████▎                                                                               | 53/251 [00:38<02:11,  1.50it/s]
 22%|█████████████████████▋                                                                               | 54/251 [00:39<02:11,  1.50it/s]
 22%|██████████████████████▏                                                                              | 55/251 [00:39<02:10,  1.50it/s]
 22%|██████████████████████▌                                                                              | 56/251 [00:40<02:24,  1.35it/s]
 23%|██████████████████████▉                                                                              | 57/251 [00:41<02:22,  1.37it/s]
 23%|███████████████████████▎                                                                             | 58/251 [00:42<02:15,  1.43it/s]
 24%|███████████████████████▋                                                                             | 59/251 [00:42<02:11,  1.46it/s]
 24%|████████████████████████▏                                                                            | 60/251 [00:43<02:11,  1.45it/s]
 24%|████████████████████████▌                                                                            | 61/251 [00:44<02:10,  1.45it/s]
 25%|████████████████████████▉                                                                            | 62/251 [00:44<02:10,  1.45it/s]
 25%|█████████████████████████▎                                                                           | 63/251 [00:45<02:10,  1.44it/s]
 25%|█████████████████████████▊                                                                           | 64/251 [00:46<02:11,  1.42it/s]
 26%|██████████████████████████▏                                                                          | 65/251 [00:46<02:11,  1.42it/s]
 26%|██████████████████████████▌                                                                          | 66/251 [00:47<02:30,  1.23it/s]
 27%|██████████████████████████▉                                                                          | 67/251 [00:48<02:39,  1.15it/s]
 27%|███████████████████████████▎                                                                         | 68/251 [00:49<02:46,  1.10it/s]
 27%|███████████████████████████▊                                                                         | 69/251 [00:50<02:35,  1.17it/s]
 28%|████████████████████████████▏                                                                        | 70/251 [00:51<02:34,  1.17it/s]
 28%|████████████████████████████▌                                                                        | 71/251 [00:52<02:25,  1.24it/s]
 29%|████████████████████████████▉                                                                        | 72/251 [00:52<02:17,  1.30it/s]
 29%|█████████████████████████████▎                                                                       | 73/251 [00:53<02:18,  1.29it/s]
 29%|█████████████████████████████▊                                                                       | 74/251 [00:54<02:22,  1.24it/s]
 30%|██████████████████████████████▏                                                                      | 75/251 [00:55<02:17,  1.28it/s]
 30%|██████████████████████████████▌                                                                      | 76/251 [00:55<02:11,  1.34it/s]
 31%|██████████████████████████████▉                                                                      | 77/251 [00:56<02:11,  1.32it/s]
 31%|███████████████████████████████▍                                                                     | 78/251 [00:57<02:29,  1.16it/s]
 31%|███████████████████████████████▊                                                                     | 79/251 [00:58<02:22,  1.21it/s]
 32%|████████████████████████████████▏                                                                    | 80/251 [00:59<02:18,  1.23it/s]
 32%|████████████████████████████████▌                                                                    | 81/251 [01:00<02:12,  1.29it/s]
 33%|████████████████████████████████▉                                                                    | 82/251 [01:00<02:09,  1.30it/s]
 33%|█████████████████████████████████▍                                                                   | 83/251 [01:01<02:07,  1.32it/s]
 33%|█████████████████████████████████▊                                                                   | 84/251 [01:02<02:02,  1.36it/s]
 34%|██████████████████████████████████▏                                                                  | 85/251 [01:03<02:09,  1.28it/s]
 34%|██████████████████████████████████▌                                                                  | 86/251 [01:04<02:23,  1.15it/s]
 35%|███████████████████████████████████                                                                  | 87/251 [01:05<02:27,  1.11it/s]
 35%|███████████████████████████████████▍                                                                 | 88/251 [01:05<02:20,  1.16it/s]
 35%|███████████████████████████████████▊                                                                 | 89/251 [01:06<02:25,  1.12it/s]
 36%|████████████████████████████████████▏                                                                | 90/251 [01:07<02:15,  1.19it/s]
 36%|████████████████████████████████████▌                                                                | 91/251 [01:08<02:06,  1.27it/s]
 37%|█████████████████████████████████████                                                                | 92/251 [01:09<02:00,  1.32it/s]
 37%|█████████████████████████████████████▍                                                               | 93/251 [01:09<01:56,  1.35it/s]
 37%|█████████████████████████████████████▊                                                               | 94/251 [01:10<01:53,  1.38it/s]
 38%|██████████████████████████████████████▏                                                              | 95/251 [01:11<01:55,  1.35it/s]
 38%|██████████████████████████████████████▋                                                              | 96/251 [01:11<01:54,  1.35it/s]
 39%|███████████████████████████████████████                                                              | 97/251 [01:12<01:51,  1.38it/s]
 39%|███████████████████████████████████████▍                                                             | 98/251 [01:13<01:56,  1.32it/s]
 39%|███████████████████████████████████████▊                                                             | 99/251 [01:14<01:58,  1.28it/s]
 40%|███████████████████████████████████████▊                                                            | 100/251 [01:15<02:06,  1.19it/s]
 40%|████████████████████████████████████████▏                                                           | 101/251 [01:15<02:00,  1.25it/s]
 41%|████████████████████████████████████████▋                                                           | 102/251 [01:16<01:58,  1.26it/s]
 41%|█████████████████████████████████████████                                                           | 103/251 [01:17<01:57,  1.26it/s]
 41%|█████████████████████████████████████████▍                                                          | 104/251 [01:18<01:58,  1.24it/s]
 42%|█████████████████████████████████████████▊                                                          | 105/251 [01:19<02:04,  1.18it/s]
 42%|██████████████████████████████████████████▏                                                         | 106/251 [01:20<01:57,  1.23it/s]
 43%|██████████████████████████████████████████▋                                                         | 107/251 [01:20<01:53,  1.27it/s]
 43%|███████████████████████████████████████████                                                         | 108/251 [01:21<01:51,  1.29it/s]
 43%|███████████████████████████████████████████▍                                                        | 109/251 [01:22<01:49,  1.30it/s]
 44%|███████████████████████████████████████████▊                                                        | 110/251 [01:23<01:50,  1.28it/s]
 44%|████████████████████████████████████████████▏                                                       | 111/251 [01:24<01:58,  1.18it/s]
 45%|████████████████████████████████████████████▌                                                       | 112/251 [01:24<01:51,  1.25it/s]
 45%|█████████████████████████████████████████████                                                       | 113/251 [01:25<01:44,  1.32it/s]
 45%|█████████████████████████████████████████████▍                                                      | 114/251 [01:26<01:42,  1.34it/s]
 46%|█████████████████████████████████████████████▊                                                      | 115/251 [01:26<01:38,  1.39it/s]
 46%|██████████████████████████████████████████████▏                                                     | 116/251 [01:27<01:34,  1.43it/s]
 47%|██████████████████████████████████████████████▌                                                     | 117/251 [01:28<01:31,  1.47it/s]
 47%|███████████████████████████████████████████████                                                     | 118/251 [01:28<01:30,  1.46it/s]
 47%|███████████████████████████████████████████████▍                                                    | 119/251 [01:29<01:31,  1.44it/s]
 48%|███████████████████████████████████████████████▊                                                    | 120/251 [01:30<01:31,  1.42it/s]
 48%|████████████████████████████████████████████████▏                                                   | 121/251 [01:30<01:30,  1.44it/s]
 49%|████████████████████████████████████████████████▌                                                   | 122/251 [01:31<01:41,  1.27it/s]
 49%|█████████████████████████████████████████████████                                                   | 123/251 [01:32<01:39,  1.29it/s]
 49%|█████████████████████████████████████████████████▍                                                  | 124/251 [01:33<01:36,  1.32it/s]
 50%|█████████████████████████████████████████████████▊                                                  | 125/251 [01:34<01:34,  1.33it/s]
 50%|██████████████████████████████████████████████████▏                                                 | 126/251 [01:35<01:39,  1.25it/s]
 51%|██████████████████████████████████████████████████▌                                                 | 127/251 [01:35<01:40,  1.23it/s]
 51%|██████████████████████████████████████████████████▉                                                 | 128/251 [01:36<01:36,  1.28it/s]
 51%|███████████████████████████████████████████████████▍                                                | 129/251 [01:37<01:32,  1.32it/s]
 52%|███████████████████████████████████████████████████▊                                                | 130/251 [01:38<01:41,  1.19it/s]
 52%|████████████████████████████████████████████████████▏                                               | 131/251 [01:39<01:53,  1.06it/s]
 53%|████████████████████████████████████████████████████▌                                               | 132/251 [01:40<01:47,  1.11it/s]
 53%|████████████████████████████████████████████████████▉                                               | 133/251 [01:41<01:51,  1.06it/s]
 53%|█████████████████████████████████████████████████████▍                                              | 134/251 [01:42<01:43,  1.13it/s]
 54%|█████████████████████████████████████████████████████▊                                              | 135/251 [01:42<01:35,  1.21it/s]
 54%|██████████████████████████████████████████████████████▏                                             | 136/251 [01:43<01:30,  1.26it/s]
 55%|██████████████████████████████████████████████████████▌                                             | 137/251 [01:44<01:28,  1.29it/s]
 55%|██████████████████████████████████████████████████████▉                                             | 138/251 [01:45<01:29,  1.26it/s]
 55%|███████████████████████████████████████████████████████▍                                            | 139/251 [01:45<01:26,  1.30it/s]
 56%|███████████████████████████████████████████████████████▊                                            | 140/251 [01:46<01:27,  1.27it/s]
 56%|████████████████████████████████████████████████████████▏                                           | 141/251 [01:47<01:29,  1.23it/s]
 57%|████████████████████████████████████████████████████████▌                                           | 142/251 [01:48<01:26,  1.26it/s]
 57%|████████████████████████████████████████████████████████▉                                           | 143/251 [01:49<01:25,  1.27it/s]
 57%|█████████████████████████████████████████████████████████▎                                          | 144/251 [01:50<01:31,  1.17it/s]
 58%|█████████████████████████████████████████████████████████▊                                          | 145/251 [01:50<01:29,  1.19it/s]
 58%|██████████████████████████████████████████████████████████▏                                         | 146/251 [01:51<01:28,  1.19it/s]
 59%|██████████████████████████████████████████████████████████▌                                         | 147/251 [01:52<01:26,  1.21it/s]
 59%|██████████████████████████████████████████████████████████▉                                         | 148/251 [01:53<01:21,  1.26it/s]
 59%|███████████████████████████████████████████████████████████▎                                        | 149/251 [01:53<01:20,  1.27it/s]
 60%|███████████████████████████████████████████████████████████▊                                        | 150/251 [01:55<01:27,  1.15it/s]
 60%|████████████████████████████████████████████████████████████▏                                       | 151/251 [01:55<01:25,  1.17it/s]
 61%|████████████████████████████████████████████████████████████▌                                       | 152/251 [01:56<01:23,  1.19it/s]
 61%|████████████████████████████████████████████████████████████▉                                       | 153/251 [01:57<01:18,  1.24it/s]
 61%|█████████████████████████████████████████████████████████████▎                                      | 154/251 [01:58<01:15,  1.28it/s]
 62%|█████████████████████████████████████████████████████████████▊                                      | 155/251 [01:59<01:20,  1.19it/s]
 62%|██████████████████████████████████████████████████████████████▏                                     | 156/251 [01:59<01:19,  1.20it/s]
 63%|██████████████████████████████████████████████████████████████▌                                     | 157/251 [02:00<01:15,  1.24it/s]
 63%|██████████████████████████████████████████████████████████████▉                                     | 158/251 [02:01<01:12,  1.28it/s]
 63%|███████████████████████████████████████████████████████████████▎                                    | 159/251 [02:02<01:17,  1.18it/s]
 64%|███████████████████████████████████████████████████████████████▋                                    | 160/251 [02:03<01:17,  1.17it/s]
 64%|████████████████████████████████████████████████████████████████▏                                   | 161/251 [02:03<01:12,  1.25it/s]
 65%|████████████████████████████████████████████████████████████████▌                                   | 162/251 [02:04<01:08,  1.30it/s]
 65%|████████████████████████████████████████████████████████████████▉                                   | 163/251 [02:05<01:05,  1.35it/s]
 65%|█████████████████████████████████████████████████████████████████▎                                  | 164/251 [02:05<01:02,  1.39it/s]
 66%|█████████████████████████████████████████████████████████████████▋                                  | 165/251 [02:06<01:01,  1.40it/s]
 66%|██████████████████████████████████████████████████████████████████▏                                 | 166/251 [02:07<01:03,  1.34it/s]
 67%|██████████████████████████████████████████████████████████████████▌                                 | 167/251 [02:08<00:59,  1.40it/s]
 67%|██████████████████████████████████████████████████████████████████▉                                 | 168/251 [02:08<00:56,  1.46it/s]
 67%|███████████████████████████████████████████████████████████████████▎                                | 169/251 [02:09<00:54,  1.49it/s]
 68%|███████████████████████████████████████████████████████████████████▋                                | 170/251 [02:09<00:53,  1.52it/s]
 68%|████████████████████████████████████████████████████████████████████▏                               | 171/251 [02:10<00:52,  1.53it/s]
 69%|████████████████████████████████████████████████████████████████████▌                               | 172/251 [02:11<00:51,  1.55it/s]
 69%|████████████████████████████████████████████████████████████████████▉                               | 173/251 [02:11<00:49,  1.56it/s]
 69%|█████████████████████████████████████████████████████████████████████▎                              | 174/251 [02:12<00:48,  1.57it/s]
 70%|█████████████████████████████████████████████████████████████████████▋                              | 175/251 [02:13<00:48,  1.58it/s]
 70%|██████████████████████████████████████████████████████████████████████                              | 176/251 [02:13<00:47,  1.56it/s]
 71%|██████████████████████████████████████████████████████████████████████▌                             | 177/251 [02:14<00:52,  1.40it/s]
 71%|██████████████████████████████████████████████████████████████████████▉                             | 178/251 [02:15<00:51,  1.42it/s]
 71%|███████████████████████████████████████████████████████████████████████▎                            | 179/251 [02:16<00:49,  1.44it/s]
 72%|███████████████████████████████████████████████████████████████████████▋                            | 180/251 [02:16<00:48,  1.46it/s]
 72%|████████████████████████████████████████████████████████████████████████                            | 181/251 [02:17<00:46,  1.50it/s]
 73%|████████████████████████████████████████████████████████████████████████▌                           | 182/251 [02:17<00:45,  1.52it/s]
 73%|████████████████████████████████████████████████████████████████████████▉                           | 183/251 [02:18<00:47,  1.44it/s]
 73%|█████████████████████████████████████████████████████████████████████████▎                          | 184/251 [02:19<00:48,  1.38it/s]
 74%|█████████████████████████████████████████████████████████████████████████▋                          | 185/251 [02:20<00:50,  1.30it/s]
 74%|██████████████████████████████████████████████████████████████████████████                          | 186/251 [02:21<00:51,  1.26it/s]
 75%|██████████████████████████████████████████████████████████████████████████▌                         | 187/251 [02:21<00:48,  1.33it/s]
 75%|██████████████████████████████████████████████████████████████████████████▉                         | 188/251 [02:22<00:50,  1.25it/s]
 75%|███████████████████████████████████████████████████████████████████████████▎                        | 189/251 [02:23<00:46,  1.34it/s]
 76%|███████████████████████████████████████████████████████████████████████████▋                        | 190/251 [02:24<00:43,  1.40it/s]
 76%|████████████████████████████████████████████████████████████████████████████                        | 191/251 [02:24<00:41,  1.44it/s]
 76%|████████████████████████████████████████████████████████████████████████████▍                       | 192/251 [02:25<00:40,  1.47it/s]
 77%|████████████████████████████████████████████████████████████████████████████▉                       | 193/251 [02:26<00:38,  1.49it/s]
 77%|█████████████████████████████████████████████████████████████████████████████▎                      | 194/251 [02:26<00:38,  1.49it/s]
 78%|█████████████████████████████████████████████████████████████████████████████▋                      | 195/251 [02:27<00:37,  1.48it/s]
 78%|██████████████████████████████████████████████████████████████████████████████                      | 196/251 [02:28<00:36,  1.51it/s]
 78%|██████████████████████████████████████████████████████████████████████████████▍                     | 197/251 [02:28<00:36,  1.49it/s]
 79%|██████████████████████████████████████████████████████████████████████████████▉                     | 198/251 [02:29<00:35,  1.49it/s]
 79%|███████████████████████████████████████████████████████████████████████████████▎                    | 199/251 [02:30<00:39,  1.31it/s]
 80%|███████████████████████████████████████████████████████████████████████████████▋                    | 200/251 [02:31<00:38,  1.33it/s]
 80%|████████████████████████████████████████████████████████████████████████████████                    | 201/251 [02:31<00:37,  1.35it/s]
 80%|████████████████████████████████████████████████████████████████████████████████▍                   | 202/251 [02:32<00:34,  1.42it/s]
 81%|████████████████████████████████████████████████████████████████████████████████▉                   | 203/251 [02:33<00:32,  1.47it/s]
 81%|█████████████████████████████████████████████████████████████████████████████████▎                  | 204/251 [02:33<00:32,  1.46it/s]
 82%|█████████████████████████████████████████████████████████████████████████████████▋                  | 205/251 [02:34<00:31,  1.47it/s]
 82%|██████████████████████████████████████████████████████████████████████████████████                  | 206/251 [02:35<00:30,  1.48it/s]
 82%|██████████████████████████████████████████████████████████████████████████████████▍                 | 207/251 [02:35<00:30,  1.46it/s]
 83%|██████████████████████████████████████████████████████████████████████████████████▊                 | 208/251 [02:36<00:29,  1.44it/s]
 83%|███████████████████████████████████████████████████████████████████████████████████▎                | 209/251 [02:37<00:30,  1.39it/s]
 84%|███████████████████████████████████████████████████████████████████████████████████▋                | 210/251 [02:38<00:33,  1.21it/s]
 84%|████████████████████████████████████████████████████████████████████████████████████                | 211/251 [02:39<00:32,  1.22it/s]
 84%|████████████████████████████████████████████████████████████████████████████████████▍               | 212/251 [02:39<00:29,  1.31it/s]
 85%|████████████████████████████████████████████████████████████████████████████████████▊               | 213/251 [02:40<00:27,  1.37it/s]
 85%|█████████████████████████████████████████████████████████████████████████████████████▎              | 214/251 [02:41<00:25,  1.43it/s]
 86%|█████████████████████████████████████████████████████████████████████████████████████▋              | 215/251 [02:41<00:24,  1.48it/s]
 86%|██████████████████████████████████████████████████████████████████████████████████████              | 216/251 [02:42<00:23,  1.52it/s]
 86%|██████████████████████████████████████████████████████████████████████████████████████▍             | 217/251 [02:42<00:22,  1.54it/s]
 87%|██████████████████████████████████████████████████████████████████████████████████████▊             | 218/251 [02:43<00:21,  1.54it/s]
 87%|███████████████████████████████████████████████████████████████████████████████████████▎            | 219/251 [02:44<00:21,  1.49it/s]
 88%|███████████████████████████████████████████████████████████████████████████████████████▋            | 220/251 [02:44<00:20,  1.49it/s]
 88%|████████████████████████████████████████████████████████████████████████████████████████            | 221/251 [02:45<00:22,  1.35it/s]
 88%|████████████████████████████████████████████████████████████████████████████████████████▍           | 222/251 [02:46<00:20,  1.39it/s]
 89%|████████████████████████████████████████████████████████████████████████████████████████▊           | 223/251 [02:47<00:20,  1.39it/s]
 89%|█████████████████████████████████████████████████████████████████████████████████████████▏          | 224/251 [02:47<00:18,  1.44it/s]
 90%|█████████████████████████████████████████████████████████████████████████████████████████▋          | 225/251 [02:48<00:17,  1.46it/s]
 90%|██████████████████████████████████████████████████████████████████████████████████████████          | 226/251 [02:49<00:17,  1.42it/s]
 90%|██████████████████████████████████████████████████████████████████████████████████████████▍         | 227/251 [02:50<00:17,  1.41it/s]
 91%|██████████████████████████████████████████████████████████████████████████████████████████▊         | 228/251 [02:50<00:17,  1.34it/s]
 91%|███████████████████████████████████████████████████████████████████████████████████████████▏        | 229/251 [02:51<00:16,  1.37it/s]
 92%|███████████████████████████████████████████████████████████████████████████████████████████▋        | 230/251 [02:52<00:15,  1.37it/s]
 92%|████████████████████████████████████████████████████████████████████████████████████████████        | 231/251 [02:52<00:14,  1.42it/s]
 92%|████████████████████████████████████████████████████████████████████████████████████████████▍       | 232/251 [02:53<00:14,  1.27it/s]
 93%|████████████████████████████████████████████████████████████████████████████████████████████▊       | 233/251 [02:54<00:14,  1.29it/s]
 93%|█████████████████████████████████████████████████████████████████████████████████████████████▏      | 234/251 [02:55<00:12,  1.31it/s]
 94%|█████████████████████████████████████████████████████████████████████████████████████████████▋      | 235/251 [02:56<00:13,  1.22it/s]
 94%|██████████████████████████████████████████████████████████████████████████████████████████████      | 236/251 [02:57<00:12,  1.24it/s]
 94%|██████████████████████████████████████████████████████████████████████████████████████████████▍     | 237/251 [02:57<00:10,  1.30it/s]
 95%|██████████████████████████████████████████████████████████████████████████████████████████████▊     | 238/251 [02:58<00:09,  1.33it/s]
 95%|███████████████████████████████████████████████████████████████████████████████████████████████▏    | 239/251 [02:59<00:08,  1.33it/s]
 96%|███████████████████████████████████████████████████████████████████████████████████████████████▌    | 240/251 [02:59<00:08,  1.36it/s]
 96%|████████████████████████████████████████████████████████████████████████████████████████████████    | 241/251 [03:00<00:07,  1.37it/s]
 96%|████████████████████████████████████████████████████████████████████████████████████████████████▍   | 242/251 [03:01<00:06,  1.39it/s]
 97%|████████████████████████████████████████████████████████████████████████████████████████████████▊   | 243/251 [03:02<00:06,  1.28it/s]
 97%|█████████████████████████████████████████████████████████████████████████████████████████████████▏  | 244/251 [03:02<00:05,  1.36it/s]
 98%|█████████████████████████████████████████████████████████████████████████████████████████████████▌  | 245/251 [03:03<00:04,  1.40it/s]
 98%|██████████████████████████████████████████████████████████████████████████████████████████████████  | 246/251 [03:04<00:03,  1.41it/s]
 98%|██████████████████████████████████████████████████████████████████████████████████████████████████▍ | 247/251 [03:05<00:03,  1.30it/s]
 99%|██████████████████████████████████████████████████████████████████████████████████████████████████▊ | 248/251 [03:05<00:02,  1.33it/s]
 99%|███████████████████████████████████████████████████████████████████████████████████████████████████▏| 249/251 [03:06<00:01,  1.36it/s]
100%|███████████████████████████████████████████████████████████████████████████████████████████████████▌| 250/251 [03:07<00:00,  1.38it/s]
100%|████████████████████████████████████████████████████████████████████████████████████████████████████| 251/251 [03:07<00:00,  1.42it/s]
[MoviePy] Done.
[MoviePy] >>>> Video ready: extra.mp4 

Wall time: 3min 11s
In [12]:
HTML("""
<video width="960" height="540" controls>
  <source src="{0}">
</video>
""".format(challenge_output))
Out[12]:
In [ ]:
 
In [ ]: